在Magento中根据类别parent设置特定的body类

时间:2014-01-20 20:14:45

标签: php xml magento

通过layout.xml我试图为特定类别添加一个body类,如:

<CATEGORY_123>
<reference name="root">
<action method="addBodyClass"><className>foo</className></action>
</reference>
</CATEGORY_123>

当我在该类别id(123)的页面上但不适用于该类别的任何子项时,此方法有效。为了确保我正在检查我想要的父母的孩子,我将其插入我的标题:

<?php 
$catID= '';
$category = Mage::registry('current_category');
if($category){
    $path = $category->getPath();
    $aCatIds = explode('/',$path);
    $iCatID = $aCatIds[2]; // get the third level category = parent
    echo $iCatID;
}
?>

2 个答案:

答案 0 :(得分:2)

在控制器文件中 Mage_Catalog_CategoryController 操作 的的viewAction 134

中有更新
$update->addHandle('CATEGORY_' . $category->getId());

并且还有一个名为addBodyClass的方法(行 153 ):

$root->addBodyClass('categorypath-' . $category->getUrlPath())
                    ->addBodyClass('category-' . $category->getUrlKey());

基于上面的这两个代码行,您的XML更新应该可以工作(我自己在很少的项目中使用过它)。 您可能需要检查是否有任何自定义模块重写 CategoryController.php viewAction

答案 1 :(得分:0)

我认为在查找此博文后我找到了原因:http://www.eddiemay.me.uk/2011/11/07/magento-changing-the-body-class-by-category/

似乎我还必须在管理员中配置类别以确保他们使用父类别设置:

enter image description here