0

しばらく前に、このサイトの左側のナビゲーションを設定しました: http://makethemostof.co.uk/では、最上位のカテゴリにある場合はすべての子カテゴリを表示し、子カテゴリにある場合はすべての兄弟カテゴリを表示します。

ここで、階層化されたナビゲーションを子カテゴリに追加したいと考えています (ただし、親カテゴリには追加しません)。階層化されたナビゲーションは正常に機能しますが、兄弟カテゴリを表示するための私のコードは機能しなくなりました。ここを参照してください: http://makethemostof.co.uk/house-garden/kitchen親 (「家と庭」) で見つけることができるリストは、フィルターの上に表示されるはずですが、そうではありません。

これは私がlayout/catalog.xmlに持っているものです:

<catalog_category_layered translate="label">
    <label>Catalog Category (Anchor)</label>
    <reference name="root">
        <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
    </reference>
    <reference name="left">
        <block type="catalog/navigation" name="catalog.leftnav" template="catalog/navigation/left.phtml"/>
        <block type="mana_filters/view_category" name="mana.catalog.leftnav" template="catalog/layer/view.phtml"/>
        <!--<block type="catalog/layer_view" name="catalog.filters" template="catalog/layer/view.phtml"/>-->
    </reference>
    <reference name="content">
        <block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
            <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
                <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                    <block type="page/html_pager" name="product_list_toolbar_pager"/>
                </block>
                <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
                <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
                <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
            </block>
        </block>
    </reference>
</catalog_category_layered>

そして、これが私がtemplate/catalog/navigation/left.phtmlに持っているものです:

<?php $currentCat = Mage::registry('current_category');

if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() ) {
    echo '<h2 class="grad">'.$this->getCurrentCategory()->getName().'</h2>';
    $loadCategory = $currentCat;
} else {
    echo '<h2 class="grad"><a href="'.$this->getCurrentCategory()->getParentCategory()-       >getURL().'">'.$this->getCurrentCategory()->getParentCategory()->getName().'</a></h2>';
    $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
}

$cats = $loadCategory->getChildrenCategories(); ?>

<ul>
<?php foreach($cats as $category): ?>
<? $category->load();
if ($category->getIsActive() && $category->getIncludeInMenu()) { ?>
<li>
    <a href="<?php echo $category->getUrl() ?>"><?php echo $category->getName() ?></a>
</li>
<? } ?>

上記のどこかにエラーがあるとしか思えません。それを特定する助けがあれば、本当に感謝しています。ありがとう!

4

2 に答える 2

1

これを試して

<?php 
   $currentCat = Mage::registry('current_category'); 

   if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() ) {
       echo '<h2 class="grad">'.$this->getCurrentCategory()->getName().'</h2>';
       $loadCategory = $currentCat;
   } else {
       echo '<h2 class="grad"><a href="'.$this->getCurrentCategory()->getParentCategory()->getURL().'">'.$this->getCurrentCategory()->getParentCategory()->getName().'</a></h2>';
       $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
   }
?>


<ul>
   <?php foreach($loadCategory->getChildrenCategories() as $subcategory): ?>
       <?php if ($subcategory->getIsActive()) : ?>
          <li>
              <a href="<?php echo $subcategory->getUrl(); ?>"><?php echo $subcategory->getName(); ?></a>
          </li>
      <?php endif; ?>
   <?php endforeach; ?>
</ul>

テストする必要がある場合getIncludeInMenu()は、各カテゴリをロードする必要があります

<ul>
   <?php foreach($loadCategory->getChildrenCategories() as $subcategory): ?>
    <?php $category = Mage::getModel('catalog/category')->load($subcategory->getId()); ?>
       <?php if ($category->getIsActive() && $category->getIncludeInMenu() ) : ?>
          <li>
              <a href="<?php echo $category->getUrl(); ?>"><?php echo $category->getName(); ?></a>
          </li>
      <?php endif; ?>
   <?php endforeach; ?>
</ul>
于 2012-11-08T12:01:35.070 に答える
0

問題はテンプレート ファイルではなく、レイアウトにあることが判明しました。拡張機能は、catalog.xml が配置された後に左側のナビゲーション ブロックを削除していたため、catalog.xml への変更は効果がありませんでした。

于 2012-11-13T12:01:26.757 に答える