所以我使用此代码显示我网站上的任何产品所包含的类别。问题是我使用一些类别作为占位符来显示'特色产品'我想尝试过滤这些。
这是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;?>
答案 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>
我以为我解决了我做错了什么,但我仍然看到列表中没有激活的类别。