Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Разделители файлов в OCMOD


AlexDW
 Поделиться

Рекомендованные сообщения

продолжая тему удивительных фактов о системе OCMOD, вдруг кому пригодится

при создании очередного мода столкнулся с непонятным - работает на версиях 2102, 2011 и даже на кривой 2000
но категорически отказывается исполнять супружеский долг работать на 2020 и 2031

причина оказалась в перечислении файлов (при множественной вставке кода)
копание в контроллерах модификаторов разных версий выявило интересные факты:

заявленная в текущем виде в документации OCMOD конструкция вида (пример)
<file path="admin/view/template/catalog/{product_form,category_form}.tpl">

прекрасно работает на 2200, 2102, 2011 и 2000, но только не на 2020 и 2031 :ugeek:
из каких-то соображений (см. рукожопство?) в контроллерах модификаторов этих версий нет GLOB_BRACE

попытка избежать многократного использования кусков кода с отличиями только в названии меняемого файла выявила следующее:

<file path="admin/view/template/catalog/product_form.tpl,admin/view/template/catalog/category_form.tpl">
будет работать только на 2020 и 2031 (разделитель ,)

<file path="admin/view/template/catalog/product_form.tpl|admin/view/template/catalog/category_form.tpl">
будет работать только на 2102 и 2200 (разделитель |)

а версии 2000 и 2011 про перечисление файлов через разделители не слыхали вообще

пришлось использовать копипаст в целях совместимости

кажется, начинаю понимать почему многие используют VQMOD при создании под 2х..

PS для потомков: на момент написания версия 2200 являлась последней, а версия 2101 - тоже что и 2102 (за исключением одного нюанса)

  • +1 6
Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Можно сделать универсально, без дополнительных копи-пастов.

Прокатила конструкция такого вида:

<file path="catalog/controller/product/{category,manufacturer,search,special}.php">
<file path="catalog/controller/product/category.php,catalog/controller/product/manufacturer.php,catalog/controller/product/search.php,catalog/controller/product/special.php">
  <operation error="skip">
    <search><![CDATA[$data['products'][] = array(]]></search>
    <add position="after"><![CDATA['stickers' => $stickers,]]></add>
  </operation>
</file>
</file>

Глаз режет, но, тем не менее, корректно обрабатывается на всех версиях линейки 2.x.

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах

Можно сделать универсально, без дополнительных копи-пастов.

Прокатила конструкция такого вида:

<file path="catalog/controller/product/{category,manufacturer,search,special}.php">
<file path="catalog/controller/product/category.php,catalog/controller/product/manufacturer.php,catalog/controller/product/search.php,catalog/controller/product/special.php">
  <operation error="skip">
    <search><![CDATA[$data['products'][] = array(]]></search>
    <add position="after"><![CDATA['stickers' => $stickers,]]></add>
  </operation>
</file>
</file>

Глаз режет, но, тем не менее, корректно обрабатывается на всех версиях линейки 2.x.

 

Жесть если честно)

Тоже натыкался на 2.0х, поскольку там разделители не работали "," или "|" пришлось копипастить.

 

А вот фигурные скобки "{}" не использую из-за совместимости, проще просто через "|" перечислить, меньше проблем с совместимостью.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.