右列进度框中的“更改”链接不再适用于我的网站。在调试时,我注意到AJAX调用正在返回具有空checkout的标记.accordion.openSection()调用
<dt class="complete">
Shipping Address <span class="separator">|</span> <a href="#payment" onclick="checkout.accordion.openSection('');return false;">Change</a>
</dt>
这怎么可能?我没有在我的主题中编辑progress.phtml,所以它是基本版本。看看基本版本,它似乎是硬编码的。
有人有什么想法吗?
编辑:
以下是上述标记的progress.phtml文件中的代码:
<dt class="complete">
<?php echo $this->__('Shipping Address') ?> <span class="separator">|</span> <a href="#payment" onclick="checkout.accordion.openSection('opc-shipping');return false;"><?php echo $this->__('Change') ?></a>
</dt>
它基本上是硬编码的,对吧?那么这怎么可能是空的呢?
答案 0 :(得分:2)
我今天发现了这个错误。对我而言,它与Amasty“Order Attributes”扩展相关联。将System->Configuration->Amasty Extensions->Order Attributes
页面的“在进度侧栏中显示属性值”设置为“否”可以解决问题。
根本原因是code/local/Amasty/Orderattr/Block/Checkout/Onepage/Progress.php
中的正则表达式。开放捕获的parens在错误的地方:
错误(orig):
$html = preg_replace('@opc-billing(.*?)<\/dd>@s', '$1'.$this->_getOrderAttributesHtml(2), $html);
正确(请注意正则表达式模式中的开放parens - 如果应用于其他正则表达式,则会修复它):
$html = preg_replace('@(opc-billing.*?)<\/dd>@s', '$1'.$this->_getOrderAttributesHtml(2), $html);