Куда идем?
Расширение ннтернет-магазина для Joomla 3.

Отображение атрибутов товара в поле заказа и письме

Больше
4 года 6 мес. назад #9110 от Алексей
Здравствуйте!
Проблема заключается в следующем: атрибуты товара из настраиваемых полей отображаются в корзине товаров, но не отображаются в таблице формы заказа, которая появляется после нажатия кнопки "Оформить заказ", и письме, которое отсылается покупателю и продавцу.
Настроек в админке не нашел. Копался в php файлах и методом научного тыка определил, что некорректно выполняется
function plgVmDisplayInOrderFE(&$item, $productCustom, &$html) в файле textinput.php ("site"\plugins\vmcustom\textinput\).
Дальше отследить не могу.
com_virtuemart.3.6.10.10211
Joomla_3.9.16-Stable

Прошу помочь в данном вопросе.
Благодарю.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9111 от Wedal
Алексей, для таких полей в настройках должна стоять опция "Атрибут корзины" в настройках поля. Вероятно, если вы видите значения полей в корзине, то она у вас стоит, но всё-таки проверьте.
После оформления заказа таблицы с товарами в стандартных макетах вообще нет. Возможно вы имеете ввиду письмо или просмотр заказа. За них отвечают отдельные макеты в VM. Вам нужно посмотреть код, который выводит значения полей в корзине, в макете корзины, а затем попробовать добавить его в макеты письма и просмотра заказа.

Найти нужные макеты поможет эта статья:
wedal.ru/rasshireniya-joomla/nastrojka-shablona-virtuemart-3.html

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9112 от Алексей
В админке обе опции "Атрибут корзины" включены.
Да, я имел в виду письмо и просмотр заказа.
Подставлять код из корзины - логично. Уже пытался, но результат никакой. И потом - в PHP я не на "ты", так что скорее всего корректировка кода была с ошибками.
Хотелось бы точно знать: была ли такая проблема с отображением атрибутов раньше и конкретный метод ее устранения.
Возможно ли, что это происходит из-за конфликта кодов Virtuemart и шаблона Joomla (стандартный Beez3)?

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9113 от Алексей
Нет, конфликта кодов точно нет. Проверил нестандартным шаблоном.

Хотел бы еще раз проследить логику кода и узнать Ваше мнение.
Итак, начало идет в "site"\components\com_virtuemart\views\invoice\tmpl\mail_html_pricelist.php:
В строке 64 основная функция, выводящая информацию в письмо и печать в PDF - VirtueMartModelCustomfields.
Строка 86 - добавляет переменную атрибутов и присваивает ему выполнение ф-ции VirtueMartModelCustomfields с ссылкой на ф-ю CustomsFieldOrderDisplay($item,'FE'), которая описана в файле "site"\administrator\components\com_virtuemart\models\customfields.php, строка 911.
Тут идет проверка на заполненность данных, декодирование и вызов ф-ции в строке 875:
displayProductCustomfieldSelected. в которую подставляются параметры ($item, '<div class="vm-customfield-cart">', 'plgVmDisplayInOrder' . $view).
А дальше непонятно что ломается: либо переменная $item, либо триггер 'plgVmDisplayInOrder' . $view, который описан в файле:
"site"\plugins\vmcustom\textinput\textinput.php, строка 122.
Вложения:

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9114 от Wedal
Алексей, так, подождите. Что-то вы уже слишком глубоко закопались. В макете заказа есть перебор товаров в цикле. Пусть объект товара, это переменная $item. Первым делом попробуйте вывести данные в виде:
<pre><?php print_r $item ?></pre>
Далее посмотрите, если в объекте информация о настраиваемых полях. Если да, то просто выведите ее. Если нет, тогда уже нужно копать то, что вы написали выше.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9115 от Алексей
Попробовал.
Ломается шаблон и пишет ошибку:
#0 syntax error, unexpected '$item' (T_VARIABLE)

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9116 от Wedal
Алексей, $item - это для примера. Смотрите в коде правильную переменную. И поместите ее в скобки, вот так:
<pre><?php print_r($item) ?></pre>

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
4 года 6 мес. назад #9121 от Алексей
Проблему решил.
Отписался тут joomla-support.ru/thread/48837/#post-193581
Благодарю за отзывчивость!

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.