magento如何通过产品ID获取Json Config

时间:2013-05-24 18:28:41

标签: magento

我需要通过产品ID或sku在特定类别的产品列表页面中获取Json Config。

我可以看到getJsonConfig在产品选项块中已经过期,其中只有一个特定产品显示为什么它可以显示Json Config而不说产品ID。但我在产品列表页面。

有没有办法让它像下面那样?

$this->getJsonConfig($productId);

2 个答案:

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