我有这个原始代码:
<div class="heading">
<h1><img src="view/image/customer.png" alt="" /> <?php echo $heading_title; ?></h1>
<div class="buttons"><a href="<?php echo $cancel; ?>" class="button"><?php echo $button_cancel; ?></a></div>
</div>
我的VQMod文件如下所示:
<modification>
<id>Backorder</id>
<version>1.0</version>
<vqmver>1.2.3</vqmver>
<author>Author</author>
<file name="admin/controller/sale/order.php">
<operation>
<search position="after"><![CDATA[$this->data['heading_title'] = $this->language->get('heading_title');]]></search>
<add><![CDATA[
$this->data['backorder_text'] = 'Backorder';
$this->data['backorder_link'] = $this->url->link('backorder/backorder', 'token=' . $this->session->data['token'] . '&ouid=' . $order_id, 'SSL');
]]></add>
</operation>
</file>
<file name="admin/view/template/sale/order_info.tpl">
<operation>
<search position="after"><![CDATA[<?php echo $button_cancel; ?></a>]]></search>
<add><![CDATA[<a href="<?php echo $backorder_link; ?>" class="button"><?php echo $backorder_text; ?></a>]]></add>
</operation>
</file>
</modification>
如果我理解VQMod是正确的,那么这应该是输出的HTML:
<div class="heading">
<h1><img src="view/image/order.png" alt=""> Bestellingen</h1>
<div class="buttons">
<a href="leLink" target="_blank" class="button">Factuur printen</a>
<a href="leLink" class="button">Annuleren</a>
<a href="leLink" class="button">Backorder</a>
</div>
</div>
但这是生成的:
<div class="heading">
<h1><img src="view/image/order.png" alt=""> Bestellingen</h1>
<div class="buttons">
<a href="leLink" target="_blank" class="button">Factuur printen</a>
<a href="leLink" class="button">Annuleren</a>
</div>
<a href="leLink" class="button">Backorder</a>
</div>
正如您所看到的,我插入的链接是否超出了div。这破坏了布局。有谁知道我做错了什么?
答案 0 :(得分:1)
问题是你正在使用after
位置,当你检查其源代码时,整个按钮div实际上是一行。相反,使用替换如下:
<operation>
<search position="replace"><![CDATA[<?php echo $button_cancel; ?></a>]]></search>
<add><![CDATA[<?php echo $button_cancel; ?></a><a href="<?php echo $backorder_link; ?>" class="button"><?php echo $backorder_text; ?></a>]]></add>
</operation>
请注意,如果您使用的是vQmod 2.4.0或更高版本,也可以使用iafter
代替after