2017-09-29 11 views
0

商品が属するカテゴリのトップカテゴリとサブカテゴリのリストを表示したいと思います。現在の製品(magento)に属する子カテゴリのみをロードする方法

正しいトップカテゴリを読み込む方法を考えましたが、サブキャット(子カテゴリ)をループすると、その製品が属するカテゴリではなく、そのトップカテゴリのすべてのサブキャットが読み込まれます。

例:

enter image description here

あなたはそれがサブカテゴリのトンをロードしますが、赤のストライプを持つものだけが製品が該当のサブカテゴリです見ることができますのように。

どのようにトップカテゴリに表示されていることを確認できますか?

マイコード:カテゴリが製品を持っているか、いない場合は、あなたのループチェックで

$currentCatIds = $_product->getCategoryIds(); 
    $categoryCollection = Mage::getResourceModel('catalog/category_collection') 
->addAttributeToSelect('name') 
// ->addFieldToFilter('level',2) 
->addAttributeToSelect('url') 
->addAttributeToFilter('entity_id', $currentCatIds) 
->addIsActiveFilter(); 

    $out = "<ul>"; 
    foreach($categoryCollection as $cat){ 
     $out .= "<li>"; 
     $out .= "<b><a href='".$cat->getUrl()."'>".$cat->getName()."</a></b>"; 
     $out .="<ul class='sub'>"; 
     $children = Mage::getModel('catalog/category') 
     // ->addAttributeToFilter('entity_id', $cat->getCategoryIds()) 
     ->load($cat->getId()) 
     ->getChildrenCategories(); 
      foreach($children as $child){ 
       $out .="<li><a href='".$child->getUrl()."'>".$child->getName()."</a></li>"; 
      } 
      $out .="</ul>"; 
     $out .= "</li>"; 
    } 
    $out .= "</ul>"; 
    echo $out; 

答えて

0

if($cat->getProductCount()){..}と同じことが$child

$currentCatIds = $_product->getCategoryIds(); 
$categoryCollection = Mage::getResourceModel('catalog/category_collection') 
->addAttributeToSelect('name') 
// ->addFieldToFilter('level',2) 
->addAttributeToSelect('url') 
->addAttributeToFilter('entity_id', $currentCatIds) 
->addIsActiveFilter(); 

$out = "<ul>"; 
foreach($categoryCollection as $cat){ 
    if($cat->getProductCount()){ 
     $out .= "<li>"; 
     $out .= "<b><a href='".$cat->getUrl()."'>".$cat->getName()."</a></b>"; 
     $out .="<ul class='sub'>"; 
     $children = Mage::getModel('catalog/category') 
     // ->addAttributeToFilter('entity_id', $cat->getCategoryIds()) 
     ->load($cat->getId()) 
     ->getChildrenCategories(); 
      foreach($children as $child){ 
      if($child->getProductCount()){ 
       $out .="<li><a href='".$child->getUrl()."'>".$child->getName()."</a></li>"; 
      } 
      } 
      $out .="</ul>"; 
     $out .= "</li>"; 
} 
} 
$out .= "</ul>"; 
echo $out; 
0

私のコードを試してみてくださいために、それは動作します。

<?php 
    $currentCatIds = $_product->getCategoryIds(); 
    foreach ($currentCatIds as $categoryid) { 
      $sub_categories = Mage::getModel('catalog/category')->load($categoryid)->getChildrenCategories(); 
      foreach ($sub_categories as $category) { 
       $cat_details = Mage::getModel('catalog/category')->load($category->getId()); 
        ?> 
        <div class="col-sm-15 col-xs-4"> 
         <div class="catImage"> 
          <a href="<?php echo $cat_details->getUrl(); ?>" title="<?php echo $cat_details->getName(); ?>"> 
           <img src="<?php echo Mage::getBaseUrl('media', array('_secure' => true)) . 'catalog/category/' . $cat_details->getThumbnail(); ?>" alt="<?php echo $cat_details->getName(); ?>"/> 
          </a> 
         </div> 
         <div class="title"> 
          <a href="<?php echo $cat_details->getUrl(); ?>" title="<?php echo $cat_details->getName(); ?>"><?php echo $cat_details->getName(); ?></a> 
         </div> 
        </div> 
        <?php 
      } 
    } 
?> 
関連する問題