这是在产品页面上生成价格的代码:
<?php echo $this->getPriceHtml($_product) ?>
在 * app / design / frontend / default / CUSTOM_TEMPLATE / template / catalog / product / view.phtml *
我有一个简单的产品,有一些自定义选项。当客户选择其中一个选项时,价格会上涨。一切正常,直到这里。
我的问题是如何在同一页面上显示两次价格(需要这个用于设计)?
我尝试将上述代码复制并粘贴到同一页面上的两个位置,但问题是选择产品选项后第二个价格不会更新。只有一个价格更新,第二个不会。关于如何使其发挥作用的任何想法?
答案 0 :(得分:2)
页面上很可能有一个JavaScript可以计算新价格,也可以使用AJAX获取它。因此输出的价格为:
<?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;
}
并修改脚本以更新您的第二个价格元素。
答案 1 :(得分: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';
},