在洋红色 1 中按 id 加载子类别



我在洋红色中有一个phtml文件。我正在使用此代码。但它加载所有子类别。有没有办法排除某些子类别

$layer = Mage::getSingleton('catalog/layer');
$category = $layer->getCurrentCategory();
/* @var $category Mage_Catalog_Model_Category */
$collection = Mage::getModel('catalog/category')->getCollection();
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
$collection->addAttributeToSelect('url_key')
->addAttributeToSelect('name')
->addAttributeToSelect('is_anchor')
->addAttributeToSelect('image')
->addAttributeToFilter('is_active', 1)
->addIdFilter($category->getChildren())
->setOrder('position', 'ASC')
->joinUrlRewrite()
->load();
$_categories=$collection; 
$_subcategories = $_category->getChildrenCategories() 
foreach ($_subcategories as $_subcategory)
{
//need to exclude some subcategory based on its id.
}

您可以按以下方式过滤类别:

  • 他们的等级:addAttributeToFilter('level','1')- 这将只获得一级类别;
  • 无论它们是否包含在菜单中:addAttributeToFilter('include_in_menu','1');

您还可以通过检查其产品来进一步筛选类别,以查看它们是否具有有效(状态为 1(以及单独可见(可见性 4(产品:

Mage::getModel('catalog/category')->load($categoryId)
->getProductCollection()
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4);

PS:您可能希望在模型类内或至少在块/帮助程序类中移动此业务逻辑,以尊重Magento 1平台的MVC(模型-视图-控制器(设计模式。

最新更新