OCMod 偏移量不替换多行代码

OCMod offset not replacing multiple lines of code

我是 OCMod 的新手,正在尝试整理我的 Opencart 3.x 商店修改。在很多地方,我需要替换多行代码,但我似乎无法让 offset 正常工作。按照 Digicart 的解决方案: 我有以下代码。

要替换的 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>

多余的请无视"if",实际情况去掉测试。问题是 offset="3" 似乎被完全忽略了,只有搜索字符串被替换了。我最终得到了 5 个按钮,而不是 3 个重新排序和修改的按钮。

我做错了什么?

请将 offset 移动到 add 标签并使用 2 而不是 3(从零开始):

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

我使用 OpenCart 3.0.2.0 进行了测试并且它有效。

为了更快地检查,您可以在 system/ 文件夹中上传名称为 install.ocmod.xml 的文件,然后清除 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>