0

こんにちは、カテゴリ ページに表示される Magento ナビゲーションを作成したいと考えています。少し混乱します。

1. 親カテゴリ Designer3 があります。
2. CAT1、CAT2、CAT3 の 3 つのサブカテゴリがあります。
3. CAT1 には、subcat1、sucat2、および subcat3 の 3 つのサブキャットがあります。

ここで、CAT1 ページに移動すると、CAT1 CAT2 と CAT3 がすべて、ナビゲーション メニューのサブキャットと共に表示されるようになります。

現在選択されているカテゴリ (CAT1、CAT2、または CAT3) に応じて、次のようになります。

--> 現在のカテゴリが CAT1 の場合、CAT1 とそのサブカテゴリが最初に表示されます。
--> 現在の猫が CAT2 の場合、ナビゲーションは次のようになります::

CAT2 とそのサブ猫、CAT1 とそのサブ猫、および CAT3 とそのサブ猫。

さらに、CAT1 内のサブカテゴリを選択した場合、Nav の位置は CAT1 になるはずです。サブキャットがある場合は CAT2、サブキャットがある場合は CAT2、サブキャットがある場合は CAT3 で、現在のカテゴリである CAT1 サブキャットが強調表示されます。

これが理にかなっていることを願っています。

私は多くのことを試しました...しかし、コーディングに関しては非常に挑戦しています...だから

これは私が疲れているものです..これは私に現在のカテゴリとそのサブ猫を与えますが、サブ猫をクリックするとすべてがトスになります....どんな助けや提案も期待されます...私はそれがマジェントに来て...

    <p><a href="<?php $currentCategory = Mage::registry('current_category');
    //Display current category url
    echo $this->getCurrentCategory()->getUrl();?>" class="ctActiveTitle">
    <?php
    $currentCategory = Mage::registry('current_category');
    //Display current category
    echo $this->getCurrentCategory()->getName();?></a> 
    <!--SHOWING SUB CATEGORIES OF CURRENT CATEGORY-->
    <?php
    $obj = new Mage_Catalog_Block_Navigation();// create obj
    $cat = Mage::getModel('catalog/category')->load($obj->getCurrentCategory()-  >getId()); //get current cat
    $subcats = $cat->getChildren(); // find them kids
    // loop on it
    foreach(explode(',',$subcats) as $subCatid){ // split up the mage data for use
    $_category = Mage::getModel('catalog/category')->load($subCatid);  
    $caturl  = $_category->getURL(); 
    $catname = $_category->getName();   
    // echo a link
    echo '<a href="'.$caturl.'" class="ctBrownLink"> '.$catname.'</a>';

    }?> </p> <p>Tnaks Moody</p>
4

1 に答える 1

1

このためのカスタム コードを実際に記述する必要はありません。ブロックMage_Catalog_Block_Navigationにはすでにこのロジックがすべて含まれており、ほとんどの問題を解決します。少なくとも、サブサブカテゴリとして選択して説明した問題。詳細については、を参照renderCategoriesMenuHtml()してください。

/**
 * Render categories menu in HTML
 *
 * @param int Level number for list item class to start from
 * @param string Extra class of outermost list items
 * @param string If specified wraps children list in div with this class
 * @return string
 */
public function renderCategoriesMenuHtml($level = 0, $outermostItemClass = '', $childrenWrapClass = '')
{
    $activeCategories = array();
    foreach ($this->getStoreCategories() as $child) {
        if ($child->getIsActive()) {
            $activeCategories[] = $child;
        }
    }
    $activeCategoriesCount = count($activeCategories);
    $hasActiveCategoriesCount = ($activeCategoriesCount > 0);

    if (!$hasActiveCategoriesCount) {
        return '';
    }

    $html = '';
    $j = 0;
    foreach ($activeCategories as $category) {
        $html .= $this->_renderCategoryMenuItemHtml(
            $category,
            $level,
            ($j == $activeCategoriesCount - 1),
            ($j == 0),
            true,
            $outermostItemClass,
            $childrenWrapClass,
            true
        );
        $j++;
    }

    return $html;
}

さらに、このメソッドは、非フラット カテゴリとフラット カテゴリを交換するときに発生する違いや、カテゴリを表示するかどうかなどを自動的に処理します。

ナビゲーションの順序についてのあなたのビットについて。使いやすさの観点から、カテゴリを選択した後も順序をそのままにしておくことをお勧めします。人々はおそらく特定の場所でのナビゲーション、またはその一部を期待するかもしれません。それらをジャグリングするのは最適ではありません。予想される場所が異なるため、人々に物事を検索させます。

于 2012-07-23T18:36:19.347 に答える