#php #magento #categories #catalog
#php #magento #Категории #каталог
Вопрос:
$product = Mage::getModel('catalog/product')->load($item->getProductId());
$pro = $product->getCategoryName(); //category id is fetched here
$category = Mage::getModel('catalog/category')->load($pro);
- Корневой каталог
- Мебель
- Электроника
- Компьютер
- Процессор
- Компьютер
- Одежда
Поэтому, когда я получаю процессор в качестве названия категории, я хочу отобразить его название категории уровня 2, которое является электроникой
Ответ №1:
получил решение, приведенный ниже код получит текущую категорию, а затем продолжит получать родительскую категорию, пока не получит самую высокую категорию (но не корневую категорию)
$product = Mage::getModel('catalog/product')->load($item->getProductId());
$pro = $product->getCategoryName(); //category id is fetched here
$category = Mage::getModel('catalog/category')->load($pro);
if ($category)
{
while($category->getLevel() != 2)
{
$category = $category->getParentCategory();
if (!$category)
{
break;
}
}
if ($category)
{
echo $category->getName();
}
else
{
echo 'Cannot find parent category';
}
}
Ответ №2:
$CategoryCollection=Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('level',2);
Ответ №3:
Вы можете использовать это
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter()
->addAttributeToFilter('level',2)
или
<?php
$_category = Mage::registry('current_category');
$_category = $this->getCurrentCategory();
// Category Name
echo $_category->getName();
// Category Level
echo $_category->getLevel();
?>
Ответ №4:
Вы можете использовать что-то вроде этого
public function get_cat_from_product($prod_id,$level){
$categoryIds = Mage::getModel('catalog/product')->load($prod_id)->getCategoryIds();
if(count($categoryIds) ){
$firstCategoryId = $categoryIds[$level-1]; //level 2 -> pos 1
$_category = Mage::getModel('catalog/category')->load($firstCategoryId);
echo $_category->getName();
}else{
return null;
}
}