2

これは私の最初の Magento プロジェクトであり、大きな問題に遭遇しました。私が使用している Magento のバージョンは 1.7.0.2 です。「app/design/frontend/default/default/template/catalog/navigation/category.phtml」で次のコードを使用して、カスタムの左バー ナビゲーション バーを作成できました。

<?php
$cats = Mage::getModel('catalog/category')->load(1)->getChildren();
$catIds = explode(',',$cats);
?>
<div id="LeftCategory">
    <h2>Wicked Categories</h2>
    <hr style="color:white; height:1px; margin:5px;" />
<ul>
<?php foreach($catIds as $catId): ?>
    <li class="Li-Top-Category">
        <?php
            $category = Mage::getModel('catalog/category')->load($catId);
            ?>
            <a href="<?php echo $category->getUrl()?>">
    <?php echo $category->getName()?>
</a>
<?php

            $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();
            $subCatIds = explode(',',$subCats);
        ?>
            <?php if(count($subCatIds) > 1):?>
                <ul>
                <?php foreach($subCatIds as $subCat) :?>
                    <li class="Li-Sub-Category">
                    <?php
                        $subCategory = Mage::getModel('catalog/category')->load($subCat);
            ?>
            <a href="<?php echo $subCategory->getUrl()?>">
    <?php echo $subCategory->getName()?>
</a>
<?php

                    ?>
                    </li>
                <?php endforeach;?>
                </ul>
            <?php endif; ?>
    </li>
<?php endforeach; ?>
</ul>

</div>

カテゴリ ナビゲーションを生成する作業を行います。しかし問題は、各リンクが指す URL が機能しないことです。404 エラー ページにつながるすべてのリンクは無効です。ここで見ることができます: http://wicked-shop.dev.thejinstudio.com/shop/catalog/category/view/s/accessories/id/15/

私は非常に多くの検索を行いましたが、この問題を実際に解決するものは何もありません。よろしくお願いします。

4

1 に答える 1

1

ヘルパーを使用しcatalog/categoryてカテゴリ モデルから適切な URL を取得する

$_catalogCatgoryHelper = Mage::helper('catalog/category');

getCategoryUrl()次に、そのヘルパーでカテゴリを関数に渡します

$_catalogCatgoryHelper->getCategoryUrl($category);

だからこれを試してみてください。私はあなたのコードに私の提案を入れました:

<?php
$_catalogCatgoryHelper = Mage::helper('catalog/category');
$cats = Mage::getModel('catalog/category')->load(1)->getChildren();
$catIds = explode(',',$cats);
?>
<div id="LeftCategory">
    <h2>Wicked Categories</h2>
    <hr style="color:white; height:1px; margin:5px;" />
<ul>
<?php foreach($catIds as $catId): ?>
    <li class="Li-Top-Category">
        <?php
            $category = Mage::getModel('catalog/category')->load($catId);
            ?>
            <a href="<?php echo $_catalogCatgoryHelper->getCategoryUrl($category) ?>">
    <?php echo $category->getName()?>
</a>
<?php

            $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();
            $subCatIds = explode(',',$subCats);
        ?>
            <?php if(count($subCatIds) > 1):?>
                <ul>
                <?php foreach($subCatIds as $subCat) :?>
                    <li class="Li-Sub-Category">
                    <?php
                        $subCategory = Mage::getModel('catalog/category')->load($subCat);
            ?>
            <a href="<?php echo $_catalogCatgoryHelper->getCategoryUrl($subCategory)?>">
    <?php echo $subCategory->getName()?>
</a>
<?php

                    ?>
                    </li>
                <?php endforeach;?>
                </ul>
            <?php endif; ?>
    </li>
<?php endforeach; ?>
</ul>

</div>

過去に使用したこのコードを使用したほうがよいかもしれません (ただし、実際には、カテゴリの深さに関係なくカテゴリを繰り返し表示するように書き直しました。これを行う方法を調べることは、確かに良い練習になるでしょう)。少しきれいですが、必要に応じて少し変更する必要があります。

<?php $helper = $this->helper('catalog/category') ?>
<div class="block block-categorynavigation">
    <div class="block-title">
        <strong><span><?php echo $this->__('Category') ?></span></strong>
    </div>
    <div class="block-content">
        <?php $categories = $this->getStoreCategories() ?>
        <?php if (count($categories) > 0): ?>
            <ul id="leftnav-tree" class="level0">
                <?php foreach($categories as $category): ?>
                    <li class="level0<?php if ($this->isCategoryActive($category)): ?> active<?php endif; ?>">
                        <a href="<?php echo $helper->getCategoryUrl($category) ?>"><span><?php echo $this->escapeHtml($category->getName()) ?></span></a>
                            <?php $subcategories = $category->getChildren() ?>
                            <?php if (count($subcategories) > 0): ?>
                                <ul id="leftnav-tree-<?php echo $category->getId() ?>" class="level1">
                                    <?php foreach($subcategories as $subcategory): ?>
                                        <li class="level1<?php if ($this->isCategoryActive($subcategory)): ?> active<?php endif; ?>">
                                            <a href="<?php echo $helper->getCategoryUrl($subcategory) ?>"><?php echo $this->escapeHtml(trim($subcategory->getName(), '- ')) ?></a>
                                                <?php $subsubcategories = $subcategory->getChildren() ?>
                                                <?php if (count($subcategories) > 0): ?>
                                                    <ul id="leftnav-tree-<?php echo $category->getId() ?>" class="level2">
                                                        <?php foreach($subsubcategories as $subsubcategory): ?>
                                                        <li class="level2<?php if ($this->isCategoryActive($subsubcategory)): ?> active<?php endif; ?>">
                                                            <a href="<?php echo $helper->getCategoryUrl($subsubcategory) ?>"><?php echo $this->escapeHtml(trim($subsubcategory->getName(), '- ')) ?></a>
                                                        </li>
                                                        <?php endforeach; ?>
                                                    </ul>
                                                <?php endif; ?>
                                        </li>
                                    <?php endforeach; ?>
                                </ul>
                            <?php endif; ?>
                    </li>
                <?php endforeach; ?>
            </ul>
        <?php endif; ?>
    </div>
</div>

編集:元のコードは、現在表示されているカテゴリのサブカテゴリのみを表示していました

于 2012-09-21T05:44:14.463 に答える