【问题标题】:How to get last level category of each product in magento如何在magento中获取每个产品的最后一级类别
【发布时间】:2016-01-07 09:27:50
【问题描述】:
我正在尝试获取列表页面上每个产品的最后一级类别名称及其产品数量。解释如下-
Category
-> Sub-category 1
->Sub-sub-category 11 -> Product 1
->Sub-sub-category 12
-> Sub-sub-sub-category 13 ->Product 2
-> Sub-category 2
->Sub-sub-category 21
-> Sub-sub-sub-category 22 ->Product 3
->Sub-sub-category 23 -> Product 4
我只想获取类别“Sub-sub-category 11”、“Sub-sub-sub-category 13”、“Sub-sub -sub-category 22" 和 "Sub-sub-sub-category 23" 是产品 1、产品 2、产品 3、产品 4 的最后一级类别。
我在下面找到了链接get last level category name of a product in magento,但它只获得了第三级类别。
【问题讨论】:
标签:
categories
product
magento-1.9
【解决方案1】:
有点晚了,不过这可以很简单的完成,当你想得到一个给定产品的最深层次的类别时使用这个函数:
public function getProductLastLevelCategory(Mage_Catalog_Model_Product $product)
{
/** @var Mage_Catalog_Model_Resource_Category_Collection $categories */
$categories = $product->getCategoryCollection()
->addAttributeToSelect('*')
->addOrder('level');
return $categories->getFirstItem();
}
基础集合包含给定产品所属的所有类别,技巧依赖于按级别对它们进行排序(隐式 DESC)。
【解决方案2】:
您好,您可以对您的类别使用getChildrenCount() 方法并检查它是否等于0
if($category->getChildrenCount() == 0) {
// Do something
}
【解决方案3】:
在我的问题上,我尝试了这段代码并成功了
<?php
$_helper = $this->helper('catalog/category');
$_storeCategories = $_helper->getStoreCategories();
?>
<?php
function getLastCategory($_categories)
{
$_helper = Mage::helper('catalog/category');
if (count($_categories) > 0) {
foreach ($_categories as $_category) {
$_category = Mage::getModel('catalog/category')->load($_category->getId());
$_subcategories = $_category->getChildrenCategories();
if (count($_subcategories) > 0) {
getLastCategory($_subcategories);
} else {
echo($_category->getName()."<br />" );
}
}
}
}
$lastCategory = getLastCategory($_storeCategories);
?>