正则表达式使用OCMOD </li>添加<li>标签

时间:2015-02-22 11:31:30

标签: regex xml opencart vqmod

我想使用OCMOD在opencart管理页面中添加一个菜单。我想修改menu.tpl文件中的菜单,但我认为它需要正则表达式,因为<li>必须是</ul>标记之前的最后一个。有人可以帮忙吗? <ul>标记是这样的:

    <ul>
      <li><a href="<?php echo $location; ?>"><?php echo $text_location; ?></a></li>
      <li><a href="<?php echo $language; ?>"><?php echo $text_language; ?></a></li>
      <li><a href="<?php echo $currency; ?>"><?php echo $text_currency; ?></a></li>
      <li><a href="<?php echo $stock_status; ?>"><?php echo $text_stock_status; ?></a></li>
      <li><a href="<?php echo $order_status; ?>"><?php echo $text_order_status; ?></a></li>
      <li><a class="parent"><?php echo $text_return; ?></a>
        <ul>
          <li><a href="<?php echo $return_status; ?>"><?php echo $text_return_status; ?></a></li>
          <li><a href="<?php echo $return_action; ?>"><?php echo $text_return_action; ?></a></li>
          <li><a href="<?php echo $return_reason; ?>"><?php echo $text_return_reason; ?></a></li>
        </ul>
      </li>
      <li><a href="<?php echo $country; ?>"><?php echo $text_country; ?></a></li>
      <li><a href="<?php echo $zone; ?>"><?php echo $text_zone; ?></a></li>
      <li><a href="<?php echo $geo_zone; ?>"><?php echo $text_geo_zone; ?></a></li>
      <li><a class="parent"><?php echo $text_tax; ?></a>
        <ul>
          <li><a href="<?php echo $tax_class; ?>"><?php echo $text_tax_class; ?></a></li>
          <li><a href="<?php echo $tax_rate; ?>"><?php echo $text_tax_rate; ?></a></li>
        </ul>
      </li>
    </ul>

我知道在

之后添加我的菜单是可行的
<li><a href="<?php echo $geo_zone; ?>"><?php echo $text_geo_zone; ?></a></li>

使用此操作

<file path="admin/view/template/common/menu.tpl">
    <operation>
        <search>
            <![CDATA[
            <li><a href="<?php echo $geo_zone; ?>"><?php echo $text_geo_zone; ?></a></li>
            ]]>
        </search>                       
        <add position="after">
            <![CDATA[
            <li><a href="<?php echo $my_menu; ?>"><?php echo $text_my_menu; ?></a></li>
             ]]>
        </add>
    </operation>
</file>

但我想将我的菜单添加到列表的最后一个(包含<li>的{​​{1}}之后)。我认为它应该使用正则表达式来使这个工作。请有人帮忙,谢谢。

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是仅使用标准搜索,并指定要</ul>使用index标记中的<add>,指定其中哪一个是正确的在之前/之后放置内容。请记住,其他扩展可以执行相同操作并添加将改变索引的子菜单。正则表达式不是一个可行的选择。

所以你的问题的操作应该是这样的:

<file path="admin/view/template/common/menu.tpl">
<operation>
    <search index="2">
        <![CDATA[
        </ul>
        ]]>
    </search>                       
    <add position="before">
        <![CDATA[
        <li><a href="<?php echo $my_menu; ?>"><?php echo $text_my_menu; ?></a></li>
         ]]>
    </add>
</operation>

索引从0开始,我们在索引</ul>中的最后一个2之前添加新列表。