Magento如果产品可配置显示选项

xienkqul  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(157)

我需要在我的相关产品上显示产品选项:
在list.phtml中,我为每个可配置的产品显示了它的选项(option表示像color这样的属性),代码如下:

<?php if($_product->getTypeId() == 'configurable'): ?> 
   <?php echo $this->getOptionsHtml($_product); ?> 
<?php endif; ?>

字符串
结果:没有!
这里有什么问题?为什么在相关的.phtml不工作?

getOptionsHtml-此函数来自Belvg ColorSwatchPro扩展。

<?php
class Belvg_ColorSwatchPro_Block_Product_List extends Mage_Catalog_Block_Product_List
{       
    public function getOptionsHtml($_product)
    {    die('sss');
        $block = $this->getLayout()->createBlock(
            'Belvg_ColorSwatchPro_Block_Product_List_Options',
            'product_list_options',
            array('template' => 'colorswatch/product/list/options.phtml'
        ));

        $block->setProduct($_product);

        return $block->toHtml();
    }
}

qyuhtwio

qyuhtwio1#

所以现在我将试着解释为什么会这样。
Magento中的所有模板都被分配给一些块。例如,在您的情况下,list.phtml使用Belvg_ColorSwatchPro_Block_Product_List块。因此,如果在模板中调用构造$this->getOptionsHtml($_product);,则意味着您调用Belvg_ColorSwatchPro_Block_Product_List块的方法。
但是当你在related.phtml中使用$this->getOptionsHtml($_product)时,它不起作用,因为这个模板被分配给没有方法getOptionsHtml的块Mage_Catalog_Block_Product_List_Related
为了使其可行,我可以建议您最简单的方法。在相关的.phtml模板中,而不是

<?php if($_product->getTypeId() == 'configurable'): ?> 
    <?php echo $this->getOptionsHtml($_product); ?> 
<?php endif; ?>

字符串
使用

<?php if($_item->getTypeId() == 'configurable') {
    $block = $this->getLayout()->createBlock(
        'Belvg_ColorSwatchPro_Block_Product_List_Options',
        'product_list_options',
        array('template' => 'colorswatch/product/list/options.phtml'
    ));

    $block->setProduct($_item);

    echo $block->toHtml();
}?>


希望对你有帮助。

相关问题