Checkout Progress框返回空checkout.accordion.openSection('')

时间:2012-01-31 01:17:40

标签: magento

右列进度框中的“更改”链接不再适用于我的网站。在调试时,我注意到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>

它基本上是硬编码的,对吧?那么这怎么可能是空的呢?

1 个答案:

答案 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);