2

カスタム ナビゲーション バーを作成して、header.phtml ファイルに挿入したいと考えています。

このためには、すべてのカテゴリのリストが必要です。配列を取得するために呼び出すことができる単純な関数があることを願っていますか?

4

2 に答える 2

3

以下は、指定されたカテゴリのサブカテゴリを取得します。ここから作業できるはずです。

$layer = Mage::getSingleton('catalog/layer');
$_category = Mage::getModel('catalog/category')->load(3); //this is cat 3, or can use: 
$_category = $layer->getCurrentCategory();
$_categories = $_category->getCollection()
 ->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description')) //or whatever fields you want
 ->addAttributeToFilter('is_active', 1)
 ->addIdFilter($_category->getChildren())
 ->setOrder('position', 'ASC')
 ->joinUrlRewrite();

次に、次のようなもの:

<?php foreach ($_categories as $_category): ?>

等...

あなたも興味があるかもしれません:

$this->htmlEscape($_category->getImageUrl())
$this->htmlEscape($_category->getName())
$_category->getURL()

それがあなたを正しい方向に向けるのに役立つことを願っています。明らかに、load(3)は単にルート カテゴリになる可能性があります。

于 2012-07-04T14:33:02.593 に答える
1

シングルストアを使用する場合、または$ _rootCatIdを動的として変更する場合は、以下のコードを使用してください。

    $_rootCatId     = 2;
    $_rootCategory  = Mage::getModel('catalog/category')->load($_rootCatId);
    $_catName       = $_rootCategory->getName();
    if($_rootCategory->hasChildren()) 
    {
        $_collection = Mage::getResourceModel('catalog/category_collection')
                        ->addAttributeToFilter('is_active', 1)
                        ->addAttributeToSort('position', 'asc')
                        ->joinUrlRewrite()
                        ->addIdFilter($_rootCategory->getChildren())
                        ->load();

        foreach($_collection AS $_sub)
        {
            $_subCat    = Mage::getModel('catalog/category')->load($_sub->getId());

            if($_subCat->hasChildren()) 
            {   
                echo '<li class="leve10 nav-'. $_subCat->getId() .'">';
                    echo '<a id="subCatLink">';
                        echo '<span>'. $this->htmlEscape($_subCat->getName()) .'</span>
                        </a>
                 </li>';
                echo '<ul id="subCatUl" class="no-display" style="padding:0px 13px;">';Categories();
                $__collection = Mage::getResourceModel('catalog/category_collection')
                        ->addAttributeToFilter('is_active', 1)
                        ->addAttributeToSort('position', 'asc')
                        ->joinUrlRewrite()
                        ->addIdFilter($_subCat->getChildren())
                        ->load();

                foreach($__collection AS $__sub)
                {
                    $__subCat   = Mage::getModel('catalog/category')->load($__sub->getId());
                    echo '<li class="leve20 nav-'. $__subCat->getId() .'">
                            <a href="'. $this->getCategoryUrl($__subCat) .'">
                             <span>'. $this->htmlEscape($__subCat->getName()) .'</span>
                            </a>
                         </li>';
                }
                echo '</ul>';
            }
            else
            {
                echo '<li class="leve10 nav-'. $_subCat->getId() .'">
                    <a href="'. $this->getCategoryUrl($_subCat) .'">
                     <span>'. $this->htmlEscape($_subCat->getName()) .'</span>
                    </a>
                 </li>';
            }
        }
    }
    else
        echo 'No Categories Found...';
于 2012-07-04T15:01:39.673 に答える