Перекрываем стандартные настройки JoomShopping правильно

Перекрываем стандартные настройки JoomShopping правильно

Далеко не все настройки JoomShopping можно изменить в административной части сайта. Часть из них просто записана в файл по пути:

Например, это список полей для сортировки товаров в категориях или имя файла изображения, которое используется по умолчанию, если основное изображение у категории, товара и т.д. не выбрано.

Конечно, можно просто изменить значение нужной переменной прямо в файле default_config.php и эти изменения сразу будут применены на сайте, но это явно не лучшее решение. Изменять системные файлы расширений или ядра CMS не лучшая практика. К тому же файл с настройками меняется и дополняется разработчиками JoomShopping довольно часто. В результате в одном из ближайших обновлений default_config.php будет перезаписан, а внесенные изменения будут утеряны. Как же изменить значения каких-либо стандартных настроек JoomShoppind без риска их потери?

Для начала обратимся к коду самого компонента JoomShopping и попробуем найти подключение конфигурационного файла default_config.php . Поиски приводят в файл:

у которого есть статический метод getConfig() , часть которого приведена ниже:

Как видно, после подключения default_config.php , функция getConfig() проверяет наличие файла user_config.php в той же директории, что и default_config.php . Если такой файл найден, то осуществляется его подключение. Файл user_config.php не входит в состав компонента JoomShopping именно для того, чтобы можно было создать его самостоятельно и не беспокоиться о том, что в каком-то обновлении этот файл будет перезаписан разработчиками JoomShopping.

В результате нужно создать файл:

в котором можно смело изменить любые стандартные настройки JoomShopping.

Приведем несколько примеров перекрытия настроек JoomShopping, о которых упоминали выше. Часто возникает необходимость изменить настройку с именем noimage , поскольку это имя файла изображения, которое используется, если в административной части сайта для категории, товара и т.д. изображения не выбраны. Особенно если учесть, что эта настройка по умолчанию имеет значение noimage.gif , а этот формат не самый распространенный формат изображений для сайтов, поскольку уступает по качеству png и jpg.

Чтобы изменить значение этой настройки нужно добавить в файл user_config.php строку:

При этом нужно разместить файл изображения noimage.png в следующих папках:

Это изображение будет показано при отсутствии основного для категорий, производителей, товаров и поставщиков соответственно. В результате можно даже сделать разные изображения noimage.png для категорий товаров и т.д. Например, с разными размерами, поскольку размеры изображений для категорий и списка товаров могут отличаться.

Еще один пример с изменение полей для сортировки товаров. Для отображения поля сортировки товаров на странице со списком товаров (например, страница категории, производителя, списка всех товаров JoomShopping и т.д.) нужно в настройках административной части JoomShopping установить флажок в разделе Товар напротив пункта Возможность сортировки товаров. При этом в верхней части шаблона появляется элемент управления полем и направлением сортировки. Набор этих полей определен именно в файле default_config.php .

Если точнее, то есть два списка полей сортировки и два списка значений этих полей. На странице какой-любо категории товаров используется массив названий полей sorting_products_name_select и массив их значений из sorting_products_field_select . Для всех остальных страниц со списками товаров используются названия из sorting_products_name_s_select и значения для сортировки из sorting_products_field_s_select .

Это значит, что при выводе в шаблоне элемента select для выбора пользователем сортировки товаров, его значения в конечном счете берутся из конфига default_config.php . В конфиге эта переменная имеет имя sorting_products_name_select для страницы категории и sorting_products_name_s_select для других страниц сайта со списком товаров и их сортировкой (например, для списка всех товаров или списка товаров конкретного производителя). Как видим в конфиге, значением этих переменных является массив. Например:

Массив состоит из индексов и языковых констант, которые в шаблоне будут выведены в соответствии с текущим языком сайта.

В результате пользователь выбирает один из вариантов сортировки. В сессии запоминается специальная переменная order , в которой хранится индекс выбранного значения из массива. Например, если выбрать _JSHOP_SORT_DATE , то в order запишется число 3.

А в процессе выборки списка товаров для отображения в шаблоне JoomShopping использует значение переменной order для получения названия поля таблицы #__jshopping_products . Для примера со страницей категории:

А значит для значения 3 поле будет 'prod.product_date_added' . Именно это поле подставляется в запрос в качестве значения для сортировки товаров.

Это дает нам возможность изменить эти списки в файле user_config.php любым удобным образом. Можно убрать лишние поля, добавить новые или изменить их значения. При этом мы может без труда сортировать товары по любому из полей таблицы #__jshopping_products . Например, по количеству товара на складе ( prod.product_quantity ) или по количеству отзывов о товаре ( prod.reviews_count ).

Конечно же, можно использовать в качестве полей для сортировки и такие, которые не находятся в таблице #__jshopping_products . Однако для правильного решения такой задачи потребуется сделать отдельный плагин, что выходит за рамки темы данной статьи. Но для тех, кому очень захочется разобраться с этим вопросом, отметим с чего начать. Плагин желательно разместить в группе jshopping (папка plugins/jshopping ) и добавить в него метод:

в котором можно изменить запрос $order_query и таблицы, из которых берутся поля $adv_from .

📎📎📎📎📎📎📎📎📎📎