Как получить верхнюю родительскую категорию из объекта текущей категории?
14
Как я могу получить родительскую категорию верхнего уровня (сразу после категории по умолчанию) из объекта текущей категории? Я хочу, чтобы имя категории и URL-адрес этой родительской категории отображались в подкатегориях.
Категория по умолчанию
Кот А
Кот Б
Cat C
Как я могу получить Cat Aимя и URL в Cat Bи Cat Cобъекты?
$category->getPath()вернет идентификаторы всех категорий от корня дерева до текущего, разделенного слешем ( /). Вот пример: 1/2/56/124/543. Первый - это «корень корней». Второй - корень каталога (категория по умолчанию). Остальные из них простые категории. Таким образом, вы можете сделать что-то вроде этого.
$path = $category->getPath();
$ids = explode('/', $path);if(isset($ids[2])){
$topParent =Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($ids[2]);}else{
$topParent =null;//it means you are in one catalog root.}
Теперь вы можете получить имя и URL-адрес следующим образом:
Спасибо Мариус! Была опечатка, getId()я исправил это. Работает отлично.
MagExt
круто. извините за опечатку. и спасибо за исправление.
Мариус
Привет, кто-нибудь может отослать меня к официальному пурпурному документу для дерева категорий?
MengT
@Marus, когда я получаю путь к категории, вся категория говорит 1/2 / <Соответствующий идентификатор категории> Мой идентификатор категории по умолчанию равен 2. Тогда что это за 1?
Здравствуй. Спасибо за ваш ответ, но вы опоздали на 5 месяцев :)
MagExt
9
Добро пожаловать в стек Magento. Вы совершенно правы, если ответите на старый вопрос, если у вас есть хороший ответ, который еще не был рассмотрен. Ответы на благо сообщества, а не только на пользу ОП. Так держать! :)
McNab
Этот ответ будет неправильным, если вы находитесь на уровне 3 и глубже, так как он возвращает первого родителя, в то время как вопрос был о верхнем.
gnysek
Хотя это не полное решение, можно зацикливаться, пока не будет достигнут желаемый уровень. Подтолкнул меня в правильном направлении.
Домино
4
Вы можете использовать getParentCategories () для текущей категории, а затем вызвать array_pop, чтобы получить последний элемент. Сделайте это дважды, чтобы получить второй последний элемент.
getId()
я исправил это. Работает отлично.Попробуй это
Просто скопируйте и вставьте этот код :)
источник
Вы можете использовать getParentCategories () для текущей категории, а затем вызвать array_pop, чтобы получить последний элемент. Сделайте это дважды, чтобы получить второй последний элемент.
источник