我需要通过产品ID或sku在特定类别的产品列表页面中获取Json Config。
我可以看到getJsonConfig
在产品选项块中已经过期,其中只有一个特定产品显示为什么它可以显示Json Config而不说产品ID。但我在产品列表页面。
有没有办法让它像下面那样?
$this->getJsonConfig($productId);
答案 0 :(得分:5)
$this->getJsonConfig()
该方法是
的一部分class Mage_Catalog_Block_Product_View
然后调用
/* @var $product Mage_Catalog_Model_Product */
$product = $this->getProduct();
public function getProduct()
{
if (!Mage::registry('product') && $this->getProductId()) {
$product = Mage::getModel('catalog/product')->load($this->getProductId());
Mage::register('product', $product);
}
return Mage::registry('product');
}
因此,要使用它(在任何其他页面中),您必须在块实例中设置产品,如下所示:
Mage::register('product', $_product); // add the product object in the registry
$block = Mage::getBlockSingleton('Mage_Catalog_Block_Product_View'); // Instantiate the product view block
echo $block->getJsonConfig();
答案 1 :(得分:4)
我找到了一个可配置产品视图页面的简单解决方案。
希望这会有所帮助。
if ($_product->isConfigurable())
{ $block1 = Mage::app()->getLayout()->createBlock('catalog/product_view');
$block1->setProduct($_product);
$configPrice = $block1->getJsonConfig(); //var_dump( $config = $block->getJsonConfig`enter code here`() );
$block2 = Mage::app()->getLayout()->createBlock('catalog/product_view_type_configurable');
$block2->setProduct($_product);
$config = $block2->getJsonConfig();
}
<?php if ($_product->isConfigurable()): ?>
<script type="text/javascript">
var optionsPrice = new Product.OptionsPrice(<?php echo $configPrice ?>);
</script>
<script type="text/javascript">
var spConfig = new Product.Config(<?php echo $config ?>);
</script>
<?php endif; ?>