Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Все узлы конфигурации интуитивно поняты. Отдельно остановлюсь на узле events. Узел содержит список событий, при которых будет вызван наш плагин. В примере это только одно событие "onAfterRenderFooter" (выводит результат плагина в после подвала сайта).

Основная логика плагина содержится в файле ItemTargetBlankPlugin.class.php. Мы постарались минимизировать навязываемые стандарты к написанию данного файла. Вот ряд правил, которые необходимо соблюдать:
- класс должен называться по названию НзаваниеПлагинаPlugin (например ItemTargetBlankPlugin)
- класс должен быть унаследован от GeneralPlugin

Класс плагина содержит методы, название которых соответствует названию событий заявленных в файле конфигурации. Например:
public function onAfterRenderFooter($vars = array()) { ... }
Класс плагина может содержать метод public function renderPluginPage($request) - метод должен вернуть html. Этот html будет отображен администратору сайта в админке сайта. На самом деле в этом методе можно организовать свой роутинг и сделать админку внутри админки. Все ограничено лишь Вашей фантазией.

Рецепты:
В обновлении 1.7.13 добавились новые события плагинов для работы с вызовом otapi.

Рассмотрим простую, но универсальную задачу: если администратор сайта изменяет статус строки заказа на "Готово к отправке", необходимо отправить sms уведомление покупателю.

Пример решения задачи:

Для начала добавляем использование необходимых нам событий в config.xml:
onOtapilibAfterGetDataНазваниеМетода - постобработка ответа при вызове сервисов из /otapilib.php
- onOtapilibAfterGetDataChangeLineStatus
- onOtapilibAfterGetDataUpdateOrderLineForOperator
- onOtapilibAfterGetDataUpdateOrderLinesForOperator
onAbstractOTAPILib2AfterCatchResponseНазваниеМетода - постобработка ответа при вызове сервисов из /otapilib2/OTAPILib2.php
- onAbstractOTAPILib2AfterCatchResponseChangeLineStatus
- onAbstractOTAPILib2AfterCatchResponseUpdateOrderLineForOperator
- onAbstractOTAPILib2AfterCatchResponseUpdateOrderLinesForOperator

Теперь в плагине делаем обработку каждого объявленного события.
По условию нашей задачи изменение статуса должно обрабатываться только для статуса "Готово к отправке" (Id=8). Поэтому добавляем дополнительное условие и при его срабатывании по номеру заказа получаем информацию о заказе, а затем и информацию о пользователе. Формируем и отправляем смс через удобный для нас сервис.

Замечания:
- событие onAbstractOTAPILib2AfterCatchResponseНазваниеМетода будет вызвано только при успешном ответе от сервисов, что позволяет пропустить проверку ответа от сервисов. В случае с событием onOtapilibAfterGetDataНазваниеМетода требуется добавить проверку на то, что сервисы успешно изменили статус строки заказа без ошибок: <ErrorCode>Ok</ErrorCode>.

...

Начиная с версии коробки 1.10.0 появилась возможность создавать свои темы дизайна. Это позволит локализовать свои правки и избежать больших проблем при обновлении.
Для добавления новой темы дизайна вам необходимо скопировать стандартную тему дизайна /themes/lite/ и назвать её, например, /themes/custom. После этих действий в админке в разделе Конфигурация › Система › Общие выберите тему custom как активную:



Такая организация кода позволит при обновлении не затирать js и css файлы вашей уникальной темы.

Важно! Если вам необходимо изменить несколько шаблонов и нет необходимости полного изменения в дизайне, то лучше воспользоваться созданием папки /themes/lite/viewscustom/ 

Фильтрация запрещенных товаров на сайте

Товары можно запрещать к продаже или вовсе скрыть с сайта.

Функционал "Фильтрация запрещенных товаров на сайте" доступен ТОЛЬКО для фильтров:
Товары - по id
Категории - по id
Продавцы - по id

В админке настройка находится в разделе Конфигурация › заказы › Общие и называется "Ограниченные к показу"
Если выбрано "Запретить" - в карточке товара будет отображена информация "Товар запрещен к продаже администрацией сайта".

Image Added

В списках товаров (в каталоге или поисковой выдаче) товар, запрещенный к продаже, отображается полупрозрачным.

2. В админке в разделе "Конфигурация - Заказы - Общие ", есть настройка "Скрыть на сайте ограниченные к показу".
Image Added

Если выбрано "отобразить" - система будет реагировать как описано выше: в списках товаров товар полупрозрачный, в карточке товара выводиться сообщение "Товар запрещен к продаже администрацией сайта".
Если выбрано "скрыть" - в списках товаров (в каталоге и поисковой выдаче) вместо товара будет отображено "Товар запрещен к продаже администрацией сайта". Ссылка на товар отсутствует. Если все же пользователь перейдет по ссылке на товар, то:
произойдет редирект (перенаправление):
- на категорию товара - если для товара известна категория, иначе
- на товары продавца - если для товара известен продавец, иначе
- на главную страницу