Смещение OCMod не заменяет несколько строк кода

Я новичок в OCMod и пытаюсь привести в порядок свои модификации магазина Opencart 3.x. Во многих местах мне нужно заменить несколько строк кода, и я не могу заставить работать смещение. Следуя решению Digicart: Замените файлы TPL администратора на OCMOD У меня есть следующий код.

3 СТРОКИ КОДА ДЛЯ ЗАМЕНЫ:

<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>
<button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button>
<button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button>

КОД OCMod:

<file path="catalog/view/theme/default/template/product/category.twig" name="">
<operation info="Move and change add to cart icon and remove text">
<search offset="3"><![CDATA[<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>]]></search>
    <add position="replace"><![CDATA[
            {% if 1 %}
            <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button>              
            <button type="button" data-toggle="tooltip" title="Add to Cart" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-cart-plus"></i></button>
            <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button>
            {% endif %}
    ]]></add>
</operation>
</file>

Пожалуйста, не обращайте внимания на лишнее «если», фактические условия удаляются для тестирования. Проблема в том, что offset="3" полностью игнорируется и заменяется только строка поиска. Я получаю 5 кнопок вместо 3 переупорядоченных и модифицированных кнопок.

Что я делаю не так?


person onefish    schedule 02.02.2018    source источник


Ответы (1)


Пожалуйста, переместите тег offset в тег add и используйте 2 вместо 3 (начиная с нуля):

<add position="replace" offset="2">

Я тестировал OpenCart 3.0.2.0, и это сработало.

Для более быстрой проверки вы можете загрузить свой файл с именем install.ocmod.xml в папку system/, а затем очистить кэш ocmod.

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>test123456</name>
  <code>test123456</code>
  <version>1.0</version>
  <author>test123456</author>
  <link>http://www.opencart.com</link>
<file path="catalog/view/theme/default/template/product/category.twig" name="">
<operation info="Move and change add to cart icon and remove text">
<search><![CDATA[<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>]]></search>
    <add position="replace" offset="2"><![CDATA[
            {% if 1 %}
            <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button>              
            <button type="button" data-toggle="tooltip" title="Add to Cart" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-cart-plus"></i></button>
            <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button>
            {% endif %}
    ]]></add>
</operation>
</file>
</modification>
person DigitCart    schedule 04.02.2018
comment
Так как часто невозможно искать уникальные строки точно в начале изменяемого кода, а многострочный поиск не работает. Вы случайно не знаете, будет ли работать ‹add position=xxx offset=-X› для замены текста над строкой поиска? Также можно ли использовать аргумент смещения с тегом поиска для перехода к n-му вхождению неуникальной строки поиска? Извините, вы ответили на исходный вопрос, это просто заставило меня искать другие способы управления ocmod, и информации просто не так много. - person onefish; 05.02.2018
comment
Да, вы можете использовать offset. Сейчас я не могу точно вспомнить, что вы должны использовать offset в теге search или в теге add, но я уверен, что вы можете использовать offset. - person DigitCart; 05.02.2018