Добавить custom field к категории товаров в VM 2

  • 29 Ответов
  • 8294 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Byakuya

  • Осваиваюсь на форуме
  • ***
  • 25
  • 0
Добрый день, возможно ли добавить настраиваемое поле к категории товаров, чтобы при создании товара оно было автоматически включено и не приходилось лезть во вкладку "Настраиваемые поля" каждый раз?

*

3auka

  • Захожу иногда
  • **
  • 14
  • 1
Самый простой вариант делать клон товара, там остаются настраиваемые поля

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
Добрый день, возможно ли добавить настраиваемое поле к категории товаров, чтобы при создании товара оно было автоматически включено и не приходилось лезть во вкладку "Настраиваемые поля" каждый раз?
Может быть имеется ввиду отобразить Произвольные поля (Custom field) в категории товаров, меня это сильно интересует ^-^ Кто нибуть такое делал?

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
Нашел вот такой код на просторах интернета
Код
<?php // Product custom_fields
    if (!empty($product->customfields)) {  ?>
<div class="product-fields">
        <?php foreach ($product->customfields as $field)
        { ?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
            <span class="product-fields-title" ><b><?php echo  JText::_($field->custom_title)?></b></span>
            <?php echo JHTML::tooltip($field->custom_tip,  JText::_($field->custom_title), 'tooltip.png'); ?>
            <span class="product-field-display"><?php echo $field->display ?></span>
 
            <span class="product-field-desc"><?php echo $field->custom_field_desc ?></span>
            </div>
 
<br/ >
            <?php
        }
        ?>
    </div>
 
<?php } ?>
Позволяет отобразить Произвольные поля в категории товаров ;D :D *DRINK*

*

Albion84

  • Захожу иногда
  • **
  • 14
  • 0
А куда этот код вставить то?

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
А куда этот код вставить то?
Мона сюда /components/com_virtuemart/views/categories/tmpl/default.php или сюда /templates/ваш_шаблон/html/com_virtuemart/category/default.php, по желанию ;D
Файл отвечающий за отображение категорий.

*

Olga_1989

  • Новичок
  • *
  • 1
  • 0
Маленькое замечание, чтобы этот код работал, настраиваемое поле должно быть помечено как атрибут корзины!

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
Маленькое замечание, чтобы этот код работал, настраиваемое поле должно быть помечено как атрибут корзины!
У меня без этого работает

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
Нашел вот такой код на просторах интернета
Код
<?php // Product custom_fields
    if (!empty($product->customfields)) {  ?>
<div class="product-fields">
        <?php foreach ($product->customfields as $field)
        { ?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
            <span class="product-fields-title" ><b><?php echo  JText::_($field->custom_title)?></b></span>
            <?php echo JHTML::tooltip($field->custom_tip,  JText::_($field->custom_title), 'tooltip.png'); ?>
            <span class="product-field-display"><?php echo $field->display ?></span>
 
            <span class="product-field-desc"><?php echo $field->custom_field_desc ?></span>
            </div>
 
<br/ >
            <?php
        }
        ?>
    </div>
 
<?php } ?>
Позволяет отобразить Произвольные поля в категории товаров ;D :D *DRINK*
У этого кода есть одно но в нем не прописана позиция макета как например
Код
                $output .= $myTabs->startPanel( 'Характеристики', 'tab1' );
                $this->position = 'normal';
                $output .= $this->loadTemplate('customfields');
кто может подсказать как можно присвоить позицию макета для кода в категории?

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
У этого кода есть одно но в нем не прописана позиция макета как например
Код
                $output .= $myTabs->startPanel( 'Характеристики', 'tab1' );
                $this->position = 'normal';
                $output .= $this->loadTemplate('customfields');
кто может подсказать как можно присвоить позицию макета для кода в категории?
Во общем нашел решение если кому то пригодиться -
Код
						<?php // Product custom_fields
    if (!empty($product->customfields)) {  ?>
<div class="product-fields">
        <?php foreach ($product->customfields as $field) {
if ($field->layout_pos == 'dopfild'){?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
            <span class="product-fields-title" ><strong><?php echo  JText::_($field->custom_title)?></strong></span>
             <span class="product-field-display"><?php echo $field->display ?></span>
             <span class="product-field-desc"><?php echo $field->custom_field_desc ?></span>
            </div>

            <?php }
        }
        ?>
    </div>
 
<?php } ?>
просто добавил условие
Код
if ($field->layout_pos == 'dopfild'){?>
может не совсем элегантно и возможно есть вариант по легче и проще но меня это устроило на данный момент, эта модификация отсортировала ту часть доп полей в которой прописана нужная мне позиция макета, если позиций например 3 то можно доработать условие через elseif или создать отдельный файл шаблона категории и присвоить их соответственно необходимой категории  :D *DRINK*  ;D

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Поле типа "Атрибут корзины" с горем пополам появилось на странице категории.
Подскажите, как вывести в категории вместо целого поля (поле select) только значения, которые присутствуют у конкретного товара?

*

Максим Пишняк

  • Живу я здесь
  • ******
  • 847
  • 35
  • Подразделение Virtuemart Украина
Ссылка, версия?
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0

*

Максим Пишняк

  • Живу я здесь
  • ******
  • 847
  • 35
  • Подразделение Virtuemart Украина
Вы можете указывать позицию для поля
http://joomlaforum.ru/index.php/topic,200240
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Позицию поля мне менять не надо. Когда получится вывести значения поля для каждого товара, стилями перемещу в нужное мне место, и сделаю блок отображаемый только при перемещении курсора на картинке товара.

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Там я уже был. Спасибо. По последнему, описанному там способу, вывел целое поле, а вот значения никак.

*

Максим Пишняк

  • Живу я здесь
  • ******
  • 847
  • 35
  • Подразделение Virtuemart Украина
Ваш пост непонятен, приведите детали, ссылку, скриншот настроек.
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Ваш пост непонятен, приведите детали, ссылку, скриншот настроек.
Ссылка на сайт http://odezhda.lviv.ua/ru-RU/golovnye-ubory
На странице категории выводится целое поле (с возможностью выбрать значение), а нужно только сами значения таблицей.

*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
У вас кастом поля  являются атрибутом корзины? Если да то в файле default_addtocart можно вывести php кодом:

Код
$fields = explode(';',$this->product->customfieldsCart[0]->custom_value);	
echo '<pre>';
print_r($fields);
echo '</pre>';

Получаете в $fields массив значений.

customfieldsCart[0] можете заменить на customfieldsCart[n] если у вас полей много. Вобще можете весь массив посмотреть print_r($this->product->customfieldsCart).
интернет-блог: http://websiteprog.ru

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Подскажите, как здесь скрин вставить?

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
У вас кастом поля  являются атрибутом корзины? Если да то в файле default_addtocart можно вывести php кодом:

Код
$fields = explode(';',$this->product->customfieldsCart[0]->custom_value);	
echo '<pre>';
print_r($fields);
echo '</pre>';

Получаете в $fields массив значений.

customfieldsCart[0] можете заменить на customfieldsCart[n] если у вас полей много. Вобще можете весь массив посмотреть print_r($this->product->customfieldsCart).

После вставки кода
Код
<?php echo '<pre>';
print_r($product->customfieldsCart[0]);
echo '</pre>'; ?>
на страницу категории, получил массив
http://odezhda.lviv.ua/images/2.jpg
А это скрин страницы, где выводился массив
http://odezhda.lviv.ua/images/1.jpg

*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Вот они вроде:

Код
foreach($product->customfieldsCart[0]->options as $field) {
echo $field->custom_value;
}
интернет-блог: http://websiteprog.ru

*

ffox

  • Захожу иногда
  • **
  • 18
  • 0
Вот они вроде:

Код
foreach($product->customfieldsCart[0]->options as $field) {
echo $field->custom_value;
}
Да!
Вот оно решение.
Спасибо огромное за помощь.

*

Garyk01

  • Захожу иногда
  • **
  • 22
  • 1
Во общем нашел решение если кому то пригодиться -
Код
						<?php // Product custom_fields
    if (!empty($product->customfields)) {  ?>
<div class="product-fields">
        <?php foreach ($product->customfields as $field) {
if ($field->layout_pos == 'dopfild'){?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
            <span class="product-fields-title" ><strong><?php echo  JText::_($field->custom_title)?></strong></span>
             <span class="product-field-display"><?php echo $field->display ?></span>
             <span class="product-field-desc"><?php echo $field->custom_field_desc ?></span>
            </div>

            <?php }
        }
        ?>
    </div>
<?php } ?>
Столкнулся с такой ситуацией:
В категории выводится несколько одинаковых товаров разного цвета друг за другом  - например :
- "Продукт синий"   -   "Продукт черный"   -   "Продукт красный" -

В категории для каждого товара выводится настраиваемое поле "изображение" - по этому коду, что выше.
Но если, например, в админ-панели к "Продукт синий" в "Сопутствующие товары" добавить "Продукт черный" и "Продукт красный", то у этих товаров ("Продукт черный", "Продукт красный") не выводится в категории настраиваемое поле "изображение".
В карточке товара все выводится нормально
А если удалить их из списка "Сопутствующие товары" в товаре "Продукт синий", то все поля у этих товаров выводятся нормально. 
Вот такая беда.  :(
Как побороть?

*

Sawell

  • Захожу иногда
  • **
  • 18
  • 0
Столкнулся с такой ситуацией:
В категории выводится несколько одинаковых товаров разного цвета друг за другом  - например :
- "Продукт синий"   -   "Продукт черный"   -   "Продукт красный" -

В категории для каждого товара выводится настраиваемое поле "изображение" - по этому коду, что выше.
Но если, например, в админ-панели к "Продукт синий" в "Сопутствующие товары" добавить "Продукт черный" и "Продукт красный", то у этих товаров ("Продукт черный", "Продукт красный") не выводится в категории настраиваемое поле "изображение".
В карточке товара все выводится нормально
А если удалить их из списка "Сопутствующие товары" в товаре "Продукт синий", то все поля у этих товаров выводятся нормально. 
Вот такая беда.  :(
Как побороть?
Приветствую! Есть решение?

*

Alex_Makarov

  • Захожу иногда
  • **
  • 13
  • 0
Всем добрый день,
Прошу помочь мне вывести настраиваемые поля в категории.
VirtueMart 3.0

Метод в первом сообщение не работает =(

Код /templates/[template_name]/html/com_virtuemart/category/default.php

Спойлер
[свернуть]

Заранее большое спасибо!

*

Snake 60

  • Осваиваюсь на форуме
  • ***
  • 33
  • 0
  • Скользкий тип...
Вот так не пробовали?
Код
<?php echo shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'my_position')); ?>
где my_position - позиция указанная в настройках настраиваемого поля

PS. Сори, ступил - это для вывода в карточке товара... для вывода в категории еще не нашел как :(
« Последнее редактирование: 10.06.2015, 19:36:07 от Snake 60 »

*

Eholov

  • Осваиваюсь на форуме
  • ***
  • 153
  • 13
Такой код работает, но вот настраиваемое поле с значением "Атрибут корзины" выводится в позиции addtocart и ни в какой другой. А мне надо вывести в другой позиции. Тут http://forum.virtuemart.net/index.php?topic=97419.0 обсуждаются позиции настраиваемых полей. Но по атрибутам корзины нет инфы. помогите кто знает.

*

Liss

  • Давно я тут
  • ****
  • 223
  • 9
Приветствую! Есть решение?
тоже интересует данный вопрос

*

Liss

  • Давно я тут
  • ****
  • 223
  • 9
тоже интересует данный вопрос

Видимо, все уже забили. Но решение у проблемы есть.
Суть решения заключается в написании прямого запроса в БД и отказа от попыток вывести пользовательские поля, разбирая массив $product->customfields
Очевидно, такой финт даст бОльшую нагрузку на сайт из-за увеличения запросов к БД. Во-первых, кэширование никто не отменял, во-вторых, можно немного схитрить
Код
if (!empty($product->customfields)) {
  //выводим стандартно, без запросов к БД
}
else {
  //пишем запрос в БД
}