Opencart / OCmod - поиск одной или другой строки кода
Я работаю над модификацией для Opencart, используя OCmod. Изначально я начал писать его для Opencart 2 (это на самом деле сделано и работает). Сейчас я обновляю его для OC3.
Вот быстрый пример того, что происходит не так.
Ранее я написал это для OC2:
<operation>
<search><![CDATA[
'status' => ($result['status']) ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
]]></search>
<add position="replace"><![CDATA[
'status' => ($result['status']),
]]></add>
</operation>
Проблема: Начиная с OC3, эта часть кода:
'status' => ($result['status']) ...
был изменен на:
'status' => $result['status'] ...
Поэтому линия не будет найдена, и замена не будет произведена.
По этой причине, если я хочу опубликовать свою модификацию для обеих версий, мне придется выпустить две разные версии моей модификации.
Интересно, есть ли способ заставить OCmod найти одну из двух строк, а затем изменить найденную. Таким образом, у меня мог быть только один код, работающий для обеих версий.
Я попытался продублировать этот фрагмент кода, заставив его искать обе строки, но моя модификация перестает работать, так как одна из строк не найдена.
Любые идеи о том, как обойти это?
1 ответ
РЕШИТЬ
Оказывается, OCmod позволяет выбирать только часть кода, а не только полные строки. Так как мне нужно было только удалить последнюю часть строки, я сделал это:
<operation>
<search><![CDATA[
? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
]]></search>
<add position="replace"><![CDATA[
,
]]></add>
</operation>
Кроме того, если OCmod поможет кому-то найти несуществующий файл, это не приведет к ошибке. Это было полезно, так как файл "product_list.tpl" был переименован в "product_list.twig" в Opencart 3. Итак, в моем файле install.xml я смог написать модификацию для обоих файлов, хотя один из них не будет быть найденным в зависимости от версии OpenCart.