Identifica la Categoria

Scritto da Mario SAM

Questo post non è una classe delle categorie, ma mi occuperò di alcuni suggerimenti in modo da non creare codici frontend inutili, ripristinando le funzioni native che il sistema già offre.

Quindi è molto importante conoscere bene il sistema prima di iniziare a creare moduli e funzioni già esistenti.

Impostazioni Backend

Quando accedi a una categoria, ci sono decine di informazioni che possono essere configurate, escludendo quindi la necessità di creare codici da controllare (se è la categoria X, se la categoria Y lo modifica).

Cose che possono essere eseguite da backend:

- Rimuovi la categoria dal menu di navigazione ma mantenga attiva nel sistema;
- Lasciare ogni categoria un colore (cambiando il disegno);
- Includi blocchi personalizzati (come banner);
- Modificare l'ordine di visualizzazione dei prodotti nell'elenco;
- Aggiungi (o rimuovi) blocchi dinamici (come carrello o newsletter) dal template;
- Aggiungi un'immagine alla categoria (normale e in miniatura);
- Personalizza SEO indidivualmente (per categoria);

Naturalmente puoi anche fare altre cose, ma sono alcune che puoi configurare senza dover inserire una singola riga di codice nel template.

Modifica di altri elementi

Supponiamo che si desideri modificare un elemento molto specifico della pagina quando si accede a una particolare categoria. (è difficile impostare un buon esempio, poiché quasi tutto può essere fatto dal backend).

Quando si accede a una categoria, il sistema registra nell’inizializzazione di questa categoria alcune informazioni, come si può vedere in:

app > code > core > Mage > Catalog > controllers > CategoryController.php

All’interno del metodo _initCatagory() il codice che registra la variabile ha informazioni sulla categoria:

Mage::register('current_category', $category);

Quindi nel tuo modello puoi recuperare queste informazioni con il codice:

Mage::registry('current_category')->getName();

Questo codice può essere utile quando è necessario associare più condizioni allo stesso tempo, ad esempio: se la categoria è X e il carrello è con prodotti Y e il cliente è dal W gruppo, quindi la pagina dovrebbe avere Z.

Altre informazioni che puoi ottenere dal Registro di sistema:

- getDescription();
- getName();
- getUrlPath();
...ho contato 33 attributi disponibili...

Su pagine non categorie, questo codice non funziona (ritorna null).

E quando non hai un registro?

Ma non tutte le pagine hanno un registro all’inizio della classe. Quindi come possiamo recuperare la categoria dei prodotti nell’elenco delle pagine?

Vediamo un esempio, in modo da aprire il file phtml responsabile del caricamento dell’elenco dei prodotti – se non si conosce quale file si utilizza, leggere il post: Debug in Frontend.

Se non sai come elencare i prodotti presenti sul sito, leggere il post: Featured Prodotti sulla Home page. In questo esempio userò il file new.phtml che si trova a:

app > design > frontend > base > default > template > catalog > product > new.phtml

Ricorda di non modificare i file in base/default, faccia sempre una copia a default/default o al template/tema personalizzato.

In questo caso usiamo l’associazione tra prodotti e categorie (che è da N a N). E mentre il codice esegue il prodotto per prodotto da visualizzare sullo schermo, prenderemo per recuperare la categoria di ciascun prodotto elencato.

/* Carica tutte le categorie a cui appartiene questo prodotto */
$cats = Mage::getModel('catalog/product')->load($_product->getId())->getCategoryIds();
/* Carica il nome della categoria immettendo la categoria ID q è stata caricata dal prodotto */
echo Mage::getModel('catalog/category')->load($cats[1])->getName();

Basta aggiungere questo codice php all’interno del foreach, appena sotto il nome del prodotto e vedrai il risultato.

Esempio

Quindi, con il codice di cui sopra hai un punto di partenza per molte variazioni, puoi giocare il nome della categoria in una variabile per fare i confronti e prendere decisioni di presentazione in base alla categoria.

Un prodotto può essere associato a diverse categorie, pertanto getCategoryIds() restituisce un array di oggetti e dipende da te per decidere quale categoria Vuoi caricare.

Successo!

L'autore

Mario SAM

Finché non si presenta l'opportunità di trasferirmi in Italia, continuo ad aiutare a distanza.