0

コードブローを使用して、現在の親カテゴリとその子を取得します。現在の子にアクティブなクラスを追加することは可能ですか?

<?php
$currentCat = Mage::registry('current_category');
if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() )
    {
    $loadCategory = $currentCat;
    }
    else
    {
    $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
    }
    $subCategories = explode(',', $loadCategory->getChildren());
    foreach ( $subCategories as $subCategoryId )
    {
    $cat = Mage::getModel('catalog/category')->load($subCategoryId);
    if($cat->getIsActive())
        {
        echo '<li><a href="'.$cat->getURL().'">'.$cat->getName().'</a></li>';
        }
     }
?>
4

2 に答える 2

1

すでに現在のカテゴリがあるので、ループされているカテゴリのIDに対してそのIDを確認できます。

あなたが持っているところ

echo '<li><a href="'.$cat->getURL().'">'.$cat->getName().'</a></li>';

IDのチェックを行うように変更し、見つかったら「アクティブ」クラスを追加します

$class = '';
if ($currentCat->getId() == $cat->getId())
{
    $class = ' class="active"';
}
echo '<li'.$class.'><a href="'.$cat->getURL().'">'.$cat->getName().'</a></li>';
于 2012-10-03T22:13:26.073 に答える
0

カテゴリをアクティブに設定するには、カタログレイヤーで現在のカテゴリを設定する必要があります。

$_categoryName=YourCategoryName;

$_category = Mage::getModel('catalog/category')->loadByAttribute('name', $_categoryName);
Mage::getSingleton('catalog/layer')->setCurrentCategory($_category);

これは、phtmlフィルターを変更するという醜いハックよりも見栄えがします。

于 2013-09-13T14:37:14.803 に答える