Como obter a categoria pai principal do objeto de categoria atual?
14
Como posso obter a categoria pai de nível superior (logo após a Categoria padrão) do objeto de categoria atual? Quero que o Nome da categoria e o URL da categoria dessa categoria pai sejam exibidos nas subcategorias.
Categoria Padrão
Cat A
Cat B
Cat C
Como posso obter Cat Ao nome, o URL Cat Be os Cat Cobjetos?
$category->getPath()retornará os IDs de todas as categorias da raiz da árvore para a atual, separada por slash ( /). Aqui está um exemplo: 1/2/56/124/543. O primeiro é a "raiz das raízes". O segundo é a raiz do catálogo (categoria padrão). O restante deles são categorias simples. Então você pode fazer algo assim.
$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.}
Obrigado Marius! Houve um erro de digitação, getId()eu o corrigi. Está funcionando perfeitamente.
MagExt
legal. desculpe pelo erro de digitação. e obrigado pela correção.
Marius
Oi, alguém pode me indicar o documento oficial do magento para a árvore de categorias?
MengT 27/10/2014
@ Marius quando eu obtenho o caminho da categoria, toda a categoria diz 1/2 / <ID da categoria respectiva> Meu ID de categoria padrão é 2. Então, o que é esse 1?
Oi. Obrigado pela sua resposta, mas você é 5 meses de atraso :)
MagExt
9
Bem-vindo ao Magento Stack. Você tem razão em responder a uma pergunta antiga se tiver uma boa resposta que ainda não tenha sido abordada. As respostas são para o bem da comunidade e não apenas para o benefício do OP. Mantem! :)
McNab
Esta resposta estará errada se você estiver no nível 3 e mais profundo, pois retorna o primeiro Pai, enquanto a pergunta era sobre o primeiro.
gnysek
Embora essa não seja uma solução completa, pode-se fazer um loop até que o nível desejado seja alcançado. Me empurrou na direção certa.
Domino
4
Você pode usar getParentCategories () na categoria atual e, em seguida, chamar array_pop para obter o último elemento. Faça isso duas vezes para obter o segundo último elemento.
getId()
eu o corrigi. Está funcionando perfeitamente.Tente isto
Simplesmente copie e cole este código :)
fonte
Você pode usar getParentCategories () na categoria atual e, em seguida, chamar array_pop para obter o último elemento. Faça isso duas vezes para obter o segundo último elemento.
fonte