Заканчивается первая неделя совместного использования Joomla 5 и Virtuemart. Начинают проявляться первые ошибки в работе знаменитого компонента интернет-магазина. Написал, я эту заметку, чтобы разобрать первую из них. Однако, всё, что буду обнаруживать впоследствии, буду также добавлять в эту статью.
Joomla\CMS\HTML\HTMLHelper Select not found
Ошибка появляется в административной панели при редактировании товара, категории и всего того, где присутствуют выпадающие списки. То, что в HTML именуется тегом SELECT.
Формирование таких списков в Virtuemart происходит,как правило, файле:
administrator/components/com_virtuemart/helpers/shopfunctions.php
Впрочем, встречаются они и в других местах. Чтобы выяснить все такие места, в общих настройках Joomla рекомендую включить режим отладки.
Ниже я опишу принцип исправления ошибки. А места в коде придется найти самостоятельно.
Решение ошибки
Если посмотреть код, отвечающий за вывод списков, то можно увидеть нечто вроде:
$listHTML = JHtml::_ ('Select.genericlist', $lu_list, $name, '', $name, 'text', $selected);
Хочется заметить, что класс JHtml лучше заменить на HTMLHelper, чтобы получилось вот так:
$listHTML = HTMLHelper::_ ('Select.genericlist', $lu_list, $name, '', $name, 'text', $selected);
При этом, в начале документа необходимо подключить этот класс командой USE:
use Joomla\CMS\HTML\HTMLHelper;
Всё это приблизит наш код к требованиям Joomla 5, однако не исправит ошибку.
А ошибка заключается в том, что первое значение отправляемое в класс JHtml (или HTMLHelper) написано разработчиками Virtuemart по неизвестной причине с заглавной буквы.
Написано так:
'Select.genericlist'
Должно быть так:
'select.genericlist'
Поэтому исправляем.
Наш окончательный вариант будет следующим:
$listHTML = HTMLHelper::_ ('select.genericlist', $lu_list, $name, '', $name, 'text', $selected);
Сохраняем требуемые файлы и наслаждаемся корректной работой админ панели Virtuemart.
Если у вас остались вопросы и предложения, милости прошу в мою группу VK.COM:
С уважением, Владимир Егоров