Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


AlexDW

Recommended Posts

продолжая тему удивительных фактов о системе 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 months later...

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

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

<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х, поскольку там разделители не работали "," или "|" пришлось копипастить.

 

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.