2012-09-21 42 views
2

這是我的第一個Magento項目,我遇到了這樣一個大問題。 我正在使用的Magento版本是1.7.0.2 我設法使用我的「app/design/frontend/default/default/template/catalog/navigation/category.phtml」中的以下代碼創建自定義左欄導航欄Magento類別鏈接到404錯誤

<?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/

我已經做了這麼多的搜索,沒有真正解決這個問題。 我很感激你的幫助。

+0

看來你已經創建了所有這些類別作爲「根類別」。根類別沒有要瀏覽的URL鍵。您需要將這些類別更改爲「根類別」的子類別。 –

+0

@PrasathAlbert謝謝你的觀點。如何將「根類別」更改爲「子類別」?我沒有看到類別管理器頁面中的選項..再次,我的版本是1.7.0.2 –

+0

@PrasathAlbert我做到了。只需拖放即可。該系統將工作。謝謝! –

回答

1

使用catalog/category助手從分類模型

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

得到適當的URL然後與助手您的類別傳遞到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> 

編輯:原始代碼只顯示subcatgories爲目前觀看類別

+0

謝謝喬希,但你能更具體嗎?像哪裏可以用這個Mage :: helper和getCategoryUrl替換?我有點迷路。 –

+0

@TheJinStudio沒問題,我爲你修改了我的答案 –

+0

我試過了你的第一個代碼。它會生成與我一樣的URL。所以仍然會導致相同的404問題。對於第二個代碼,我粘貼它來替換我的代碼。然後這些類別不會顯示出來。我想我可能需要在使用它之前先看看它。謝謝 –