Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

OCMOD в OpenCart: как работает и как отлаживать

Краткое описание задачи

OCMOD — встроенная в OpenCart 3+ система модификации файлов через XML-правила. Позволяет менять код ядра, модулей и шаблонов без правки оригиналов. Разберём, как с ней работать.

Структура XML-модификации

<?xml version="1.0" encoding="UTF-8"?>
<modification>
  <code>my_module_rename_cart</code>
  <name>Переименование корзины</name>
  <author>Имя</author>
  <version>1.0</version>
  <file path="catalog/language/ru-ru/checkout/cart.php">
    <operation>
      <search><![CDATA[$_['heading_title']]></search>
      <add position="replace"><![CDATA[$_['heading_title'] = 'Корзина покупок';]]></add>
    </operation>
  </file>
</modification>

Как отлаживать

Если модификация не работает: нажмите Refresh в списке модификаций -> очистите кэш модификаций (папка system/storage/modification/) -> проверьте синтаксис XML -> включите логирование ошибок в config.php.

Как работать с OCMOD: рекомендации из практики

Как лучше: Каждой модификации давайте понятный code — например, fix_cart_weight. Это спасёт, когда через год накопится 20+ XML-файлов и нужно быстро найти нужный. Храните XML-файлы отдельно (в папке system/storage/modification/) — не удаляйте их оттуда вручную, используйте Refresh в админке.

Как не делать: Не пытайтесь через OCMOD править то, что можно изменить через тему или Event-систему. Например, переводы строк в шаблонах лучше менять через переопределение шаблона, а данные для витрины — через событие view/*/before. OCMOD для этого избыточен.

Кейс из практики: Магазин электроники поставил три модуля от разных разработчиков — каждый менял файл catalog/controller/product/category.php. Пагинация перестала работать, товары дублировались. Решение: отключили все модификации, включили по одной, нашли конфликтующий код. Переписали две модификации так, чтобы каждая меняла свою часть файла через уникальные теги поиска. Теперь модули работают совместно.

Если конфликты OCMOD отнимают много времени — закажите доработку OpenCart: разложим модификации без конфликтов.

FAQ

Почему модификация не применяется?

Самая частая причина — конфликт с другой модификацией, которая меняет тот же участок кода. Отключите все модификации, включите только вашу, проверьте. Если работает — ищите конфликтующую.

Почему после Refresh модификации всё равно виден старый код?

Проверьте, не включён ли кэш Twig в админке (Система → Настройки → Сервер → Use Template Cache). Если включён — очистите кэш шаблонов вручную: удалите содержимое папки system/storage/cache/template/. После Refresh OCMOD генерирует новые файлы, но старый Twig-кэш может перекрывать их.

Итог

OCMOD — основной инструмент доработки OpenCart. XML + Refresh + отладка = безопасные изменения без правки ядра. По практике, большинство проблем с модификациями решаются правильным именованием кода и пошаговой проверкой — не усложняйте там, где можно просто.

← Предыдущая Как создать простой модуль для OpenCart Следующая → VQMod и OCMOD: что выбрать и чем отличаются

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.