magento template xml:将静态块添加到特定类别中所有产品的产品描述中

时间:2011-01-17 20:15:27

标签: xml templates magento

使用Magento 1.4.1.1或1.5.0.0以及与特定类别相关联的给定产品,我需要在单个视图中将静态块附加到产品描述中。

我可以创建静态块(测量图像)并在local.xml中添加简单的附加代码。但是,我无法弄清楚如何限制附加到某些类别的产品的应用

EG:所有鞋类产品单一视图页面(当然是鞋类)应显示鞋码尺寸测量图像,裙边尺码测量图像等。

我真的不想超越模板...只想附加一个块!

3 个答案:

答案 0 :(得分:2)

如果您认为产品只属于一个类别,那么您可以像这样检查模板文件:

$product = Mage::registry('current_product');
$category = $product->getCategory(); // get first category only
if ($category->getUrlKey() == 'shoes'):
    // Output show size measurements
elseif ($category->getUrlKey() == 'skirts'):
    // Output skirt measurements
endif;

我在这里使用了getUrlKey,因为它提供了您在管理员中输入的文字,因此可以管理。

更复杂的方法是使用每个产品的“设计”选项卡中的“自定义布局更新”字段直接放入XML,但这样做更有效。

答案 1 :(得分:2)

创建一个自定义块类型(您可以称之为Somemodule_Categorical_Cms_Block,或者选择一个来自cms/block的非常糟糕的名称)。在该块类中,实现以下内容:

protected function _toHtml()
{
    if(!$this->isEnabledForCategory()) {
        return "";
    }
    return parent::_toHtml();
}

实施您自己的isEnabledForCategory以检查类别。更改local.xml声明以调用新的块类,您应该设置为go。

希望有所帮助!

谢谢, 乔

答案 2 :(得分:0)

我需要做这样的事情,我想出了这个:
1-创建一个名为" category1_size_guide"的静态块 2-只要我的主题使用:
" \应用\设计\前端\ theme_designer \ THEME_NAME \模板\页面\ 2columns-right.phtml"
对于显示产品,我添加此代码:

$product = Mage::registry('current_product');
$catIds = ($product)?$product->getCategoryIds():array(); //print_r($catIds);
if(in_array(60, $catIds)){ //60 is category id you want to check
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('category1_size_guide')->toHTML();
}