过滤magento中的非活动类别

时间:2017-07-31 20:34:33

标签: php magento

所以我使用此代码显示我网站上的任何产品所包含的类别。问题是我使用一些类别作为占位符来显示'特色产品'我想尝试过滤这些。

这是PHP 5.6.30上的Magento 1.9.1.0

<ul class="listfix">
<?php $categories = $_product->getCategoryIds(); ?>
<?php foreach($categories as $k => $_category_id):
 ?>
<?php $_category= Mage::getModel('catalog/category')->load($_category_id)?>
     <?php if($_category->getId()):?> 
    <li><a href="<?php echo $_category->getUrl() ?>"><?php echo $_category-
>getName() ?></a>
    </li>
        <?php endif;?>
   <?php endforeach; ?>
</ul> 

我尝试添加此

    $_category->addAttributeToFilter('is_active', 1)//get only active 
    categories

但它犯了一个错误,我不是一个伟大的PHP家伙,我只是找到一些代码并尝试让它们工作。我从HERE

获得了原始部件

如下所示,我试图添加下面的代码,但我仍然看到列出的类别不活跃...

<ul class="listfix">
<?php $activeCategories = 
Mage::getResourceModel('catalog/category_collection')
->addAttributeToFilter('is_active', 1)
->getColumnValues('entity_id');
?>  

<?php $activeCategories = $_product->getCategoryIds(); ?>
<?php foreach($activeCategories as $k => $_category_id):  ?>
<?php $_category= Mage::getModel('catalog/category')->load($_category_id)?>
    <?php if($_category->getId()):?> 
<li><a href="<?php echo $_category->getUrl() ?>"><?php echo $_category-
>getName() ?></a>
</li>
    <?php endif;?>

      

2 个答案:

答案 0 :(得分:0)

这将为您提供1.9中所有活动分类ID的列表:

$activeCategories = Mage::getResourceModel('catalog/category_collection')
->addAttributeToFilter('is_active', 1)
->getColumnValues('entity_id');

然后循环遍历该数组,并按ID:

加载类别或其他内容
foreach($activeCategories as $id) {
  $cat = Mage::getModel('catalog/category')->load($id);
}

答案 1 :(得分:0)

<ul class="listmem">
<?php $activeCategories = 
Mage::getResourceModel('catalog/category_collection')
->addAttributeToFilter('is_active', 1)
->getColumnValues('entity_id');?>

<ul class="listfix">
<?php $activeCategories = $_product->getCategoryIds(); ?>
<?php foreach($activeCategories as $id) {
    $cat = Mage::getModel('catalog/category')->load($id);
} ?>

<?php if($cat->getId()):?> 
    <li><a href="<?php echo $cat->getUrl() ?>"><?php echo $cat->getName() ?>
</a>
    </li>
<?php endif;?>
</ul> 

我以为我解决了我做错了什么,但我仍然看到列表中没有激活的类别。