Come ottenere la categoria principale superiore dall'oggetto categoria corrente?


14

Come posso ottenere la categoria principale di livello superiore (subito dopo la categoria predefinita) dall'oggetto categoria corrente? Voglio che il nome della categoria e l'URL della categoria di quella categoria principale vengano visualizzati nelle sottocategorie.

  • Categoria predefinita
    • Cat A
      • Gatto B
        • Cat C

Come posso ottenere Cat Ail nome, l'URL Cat Be gli Cat Coggetti?

Risposte:


22

$category->getPath()restituirà gli ID di tutte le categorie dalla radice dell'albero a quella corrente separata da slash ( /). Ecco un esempio: 1/2/56/124/543. Il primo è la "radice delle radici". Il secondo è la radice del catalogo (categoria predefinita). Il resto sono categorie semplici. Quindi puoi fare qualcosa del genere.

$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.
}

Ora puoi ottenere il nome e l'URL in questo modo:

if ($topParent){
    $name = $topParent->getName();
    $url = $topParent->getUrl();
}

Grazie Marius! C'era un refuso in getId()ho corretto. Funziona perfettamente.
MagExt il

freddo. scusa per l'errore di battitura. e grazie per la correzione.
Marius

Salve, qualcuno può riferirmi al documento magento ufficiale per l'albero delle categorie?
MengT

@Marius quando ottengo il percorso della categoria, tutta la categoria dice 1/2 / <ID categoria rispettiva> Il mio ID categoria predefinito è 2. Allora che cos'è questo 1?
Butterfly,

1
@invissible hai ragione.
Marius

15

Prova questo

$level = $this->getCurrentCategory()->getParentCategory()->getLevel();
if($level > 1){                 
    echo $this->getCurrentCategory()->getParentCategory()->getName();
    }
    else{
    echo $this->escapeHtml($_category->getName());
    }

Basta copiare e incollare questo codice :)


Ciao. Grazie per la risposta, ma sei in ritardo di 5 mesi :)
MagExt

9
Benvenuti nello stack Magento. Hai ragione a rispondere a una vecchia domanda se hai una buona risposta che non è già stata coperta. Le risposte sono per il bene della comunità e non solo a beneficio del PO. Continuate così! :)
McNab,

Questa risposta sarà sbagliata se sei al livello 3 e più in profondità, poiché restituisce il primo genitore, mentre la domanda era sulla prima.
gnysek,

Sebbene questa non sia una soluzione completa, è possibile eseguire il loop fino al raggiungimento del livello desiderato. Mi ha spinto nella giusta direzione.
Domino,

4

È possibile utilizzare getParentCategories () nella categoria corrente e quindi chiamare array_pop per ottenere l'ultimo elemento. Fallo due volte per ottenere il secondo ultimo elemento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.