2010-12-03 13 views
2

Je veux que certaines pages de catégorie soient en mode liste et commencent avec 30 éléments affichés mais je veux qu'une autre page de catégorie soit en mode grille et avec moins éléments affichés. Je comprends que je peux le faire en mettant à jour la mise en page personnalisée xml à travers le panneau d'administration, mais je ne suis pas sûr de ce que le XML exact serait.Magento Catégorie Pages: Changer la disposition des catégories spécifiques du mode grille au mode liste

+0

Il est plus que vous devez effectuer une personnalisation , avec observation des événements et dépassement de quelques classes dans Magento. Il semble quelque part dans mes archives, j'ai un tel module. Si je le trouve, je vous le ferai savoir. Mais il n'y avait que la personnalisation avec les modes de liste, qui a pu être configuré. Mais je suis sûr que vous pouvez effectuer quelque chose de similaire pour la taille de la page de la liste des produits. –

+0

Ouais, j'ai juste compris ça. La classe Magento manque une méthode pour définir le mode, vous pouvez seulement définir le mode via les paramètres GET à la page. J'ai donc créé un nouveau module qui le remplace. –

Répondre

5

Ma solution était de créer un module qui remplace la classe Barre d'outils qui contrôle la vue grille/liste du catalogue et le nombre d'éléments à afficher. La classe spécifique à remplacer est appelée Mage_Catalog_Block_Product_List_Toolbar. Clone du fichier et ajoutez la méthode suivante pour elle:

/** 
* Sets the current View mode (grid, list, etc.) 
* 
* @param string $mode 
*/ 
public function setCurrentMode($mode) 
{ 
    $this->setData('_current_grid_mode', $mode); 
} 

Vous devez également créer un fichier config.xml pour elle.

<!-- app/code/local/Example/Catalog/etc/config.xml --> 
<?xml version="1.0"?> 
<config> 
    <global> 
    <blocks> 
     <catalog> 
     <rewrite> 
      <product_list_toolbar>Example_Catalog_Block_Product_List_Toolbar</product_list_toolbar> 
     </rewrite> 
     </catalog> 
    </blocks> 
    </global> 
</config> 

Maintenant, dans le panneau d'administration, pour modifier la mise en page d'une catégorie, allez à Catalogue> Gérer les catégories et sélectionnez la catégorie que vous souhaitez modifier. Allez dans l'onglet Custom Design et dans le champ intitulé Mise en page personnalisée mise à jour, entrez le code XML suivant:

<reference name="product_list_toolbar"> 
    <action method="setCurrentMode"> 
    <mode>list</mode> 
    </action> 
</reference> 

Bien sûr, ne pas oublier de vider les caches de mise en page de Magento ou votre changement n'apparaîtra .

+0

Merci pour le conseil. J'ai ajouté la fonction à une copie locale du fichier et je n'ai pas pris la peine d'utiliser une approche 'module' appropriée, cela a bien fonctionné pour moi et je peux encore gérer mes mises à niveau de façon judicieuse. –

+0

Cool, assurez-vous de vérifier les différences entre les fichiers chaque fois que vous mettez à niveau. Ma méthode utilise un fichier cloné du code de base de Magento qui peut donc changer lors d'une mise à jour: S –

0

en double le list.phml et le renommer grid.phtml puis:

changement

<?php if($this->getMode()!='grid'): ?> 

à

<?php if($this->getMode()!='list'): ?> 

puis ajoutez le bloc à la page CMS:

{{block type="catalog/product_list" category_id="152" template="catalog/product/grid.phtml"}} 
2

I k maintenant il est un peu en retard, mais cela fonctionne même sans réécritures directement via le XML de mise en page ou la section « Mise à jour Mise en page personnalisée » dans admin:

<reference name="product_list_toolbar"> 
    <action method="setData"><key>_current_grid_mode</key><value>list</value></action> 
</reference> 

Voir: https://stackoverflow.com/a/25803228/1918829