0

这是在产品页面上生成价格的代码:

<?php  echo $this->getPriceHtml($_product) ?>

*app/design/frontend/default/CUSTOM_TEMPLATE/template/catalog/product/view.phtml*

我有一个带有一些自定义选项的简单产品。当客户选择其中一个选项时,价格会上涨。直到这里一切正常。

我的问题是如何在同一页面上显示两次价格(出于设计目的需要这个)?

我尝试将上面的代码复制并粘贴到同一页面的两个位置,但问题是选择产品选项时第二个价格不会更新。只有一个价格更新,第二个不会。关于如何使它工作的任何想法?

4

2 回答 2

2

页面上很可能存在计算新价格或使用 AJAX 获取新价格的 JavaScript。因此输出的价格为:

<?php echo $this->getPriceHtml($_product) ?>

将被新的覆盖。解决这个问题需要您找到 Javascript 并找到它执行此操作的位置。您还应该检查 getPriceHtml 调用周围的 HTML 元素。我猜模板可能有这样的东西:

<p class="totalProductPrice"><?php echo $this->getPriceHtml($_product) ?></p>

如果您使用具有可识别类名或 ID 的元素围绕第二个价格输出的输出,您应该能够修改 Javascript 以将新计算的价格以及原始价格输出到该元素。

编辑:

检查我自己的代码库后,我认为您要查找的文件位于/js/varien/Product.js. 在函数内部reloadPrice: function(),检查第 481 行:

    if($('product-price-'+this.config.productId)){
        $('product-price-'+this.config.productId).innerHTML = price;
    }

并修改脚本以更新您的第二个价格元素。

于 2013-10-17T11:49:34.247 回答
0

我的解决方案是:

price_clone.phtml复制到price_clone2.phtml并更改:

<?php echo $this->getPriceHtml($_product, false, '_clone2') ?>

catalog.xml中添加块

<block type="catalog/product_view" name="product.clone_prices2" as="prices2" template="catalog/product/view/price_clone2.phtml"/>

并在product.js中更改initPrices 函数

initPrices: function() {
    this.containers[0] = 'product-price-' + this.productId;
    this.containers[1] = 'bundle-price-' + this.productId;
    this.containers[2] = 'price-including-tax-' + this.productId;
    this.containers[3] = 'price-excluding-tax-' + this.productId;
    this.containers[4] = 'old-price-' + this.productId;
    this.containers[5] = 'product-price-' + this.productId+'_clone2';
},
于 2018-07-09T12:05:41.140 回答