Block magento

novembre 5, 2009 7 Commentaires

Les blocks magento, code correspondant aux classes de magento dans le noyau (core). Ne pas les confondre avec un bloc terme utilisé dans le designer guide qui désigne la structure des pages magento (bloc header , content..). Dans le model view controler de magento (MVC) les blocks correspondent à view.

Un block est associé à un template

L’association du block au template se fait avec ce code :

<block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>

Cette association se fait généralement dans les layout, dans le code ci-dessus on associe le block view.php au template view.phtml. Le template aura accès aux méthodes de la classe view.php ainsi qu’aux classes étendues par celle-ci.
On déclare quel block on veut utiliser avec « type= » + chemin du block
On déclare quel template héritera des fonctionnalités du block « template= » + chemin du template

Voici le chemin vers le block et le template :

magento\app\code\core\Mage\Catalog\Block\Category
magento\app\design\frontend\default\default\template\catalog\layer

Associer un block à un template via le back office de magento

Vous pouvez rattacher un block a un template via le back office de magento, dans la partie contenu d’une page CMS par exemple.
L’association se fait avec le même code entouré d’une double accolade :
Ce code rattache le block template.php a un template home-haut.phtml

{{block type="core/template" template="homepage/home-haut.phtml"}}

Ce code rattache le block list.php au template list.phtml

{{block type="catalog/product_list" category_id="12" template="catalog/product/list.phtml"}}
Code
7 commentaires : “Block magento”
  1. vrnet dit :

    Manqueraient pas les «  » ?
    Genre :
    {{block type= »core/template » template= »homepage/home-haut.phtml »}}

  2. admin dit :

    Salut vrnet
    Oui il manque bien les guillemets :)

    merci je rectifie

  3. XIII_73 dit :

    Bonjour,
    je voudrai mettre en place une page cms qui contiendrai

    {{block type= »catalog/product_list » category_id= »12″ template= »catalog/product/list.phtml »}}

    jusque là rien d’extraordinaire

    mais je ne parviens pas a avoir le pager. ce dernier fonctionne bien lorsque c’est dans une catégorie ou sous-catégorie

    mais dans ma page cms g ma toolbar avec les filtres de trie elle indique le nombre de produit sur produit totale mais pas de pager

    si quelqu’un veux bien me donner une piste par avance merci

    Magento 1.4.0.1

  4. cédric rousset dit :

    Bonjour,
    Le block et chargé, mais tu n’a pas le pager ?
    JE crois qu’il y as un problème avec le pager de magento 1.4 et la toolbar (c’est surtout après une mise à jour de magento)
    Tu travailles sur une boutique « neuve » ou sur une mise à jour ?

  5. TANCHOU dit :

    Il est normal de ne pas avoir le pager, car celui-ci ne s’affiche que s’il est un enfant du block list_toolbar :

    Hors en utilisant l’inclusion du bloc list dans une page CMS le bloc pager n’est pas chargé !

    La solution est de passé par l’habillage et l’XML d’agencement :

    C’est la ligne
    3
    qui permet de préciser la catégorie à afficher.


    16

    3
    empty6
    one_column5
    two_columns_left4
    two_columns_right4
    three_columns4
    product_list_toolbar
    manufacturer

  6. TANCHOU dit :

    Il est normal de ne pas avoir le pager, car celui-ci ne s’affiche que s’il est un enfant du block list_toolbar :
    [CODE]


    [/CODE]
    Hors en utilisant l’inclusion du bloc list dans une page CMS le bloc pager n’est pas chargé !

    La solution est de passé par l’habillage et l’XML d’agencement :

    C’est la ligne
    [CODE]3[/CODE]
    qui permet de préciser la catégorie à afficher.

    [CODE]


    16

    3
    empty6
    one_column5
    two_columns_left4
    two_columns_right4
    three_columns4
    product_list_toolbar
    manufacturer

    [/CODE]

  7. TANCHOU dit :

    Le code
    Hors en utilisant l’inclusion du bloc list dans une page CMS le bloc pager n’est pas chargé !
    La solution est de passer par l’habillage et l’XML d’agencement de ta page CMS:
    C’est la ligne

    <action method="setCategoryId"><category_id>3</category_id></action>

    qui définie la catégorie que tu souhaite afficher.

    le code en entier :

    <reference name="content">
    <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
     
    <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
    <block type="page/html_pager" name="product_list_toolbar_pager"/>
    <!-- The following code shows how to set your own pager increments -->
    <action method="setDefaultGridPerPage"><limit>16</limit></action>
    </block>
    <action method="setCategoryId"><category_id>3</category_id></action>
    <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
    <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
    <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
    <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
    <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>4</count></action>
    <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
    <action method="addAttribute"><code>manufacturer</code></action>
    </block>
    </reference>

    Enfin pour finir, il ne faudra rien mettre dans ta page CMS.
    Donc en passant en mode html, il suffit de mettre :

    <!--blank-->

    pour que Magento ne te bloque pas à l’enregistrement de la page CMS (contenu obligatoire !)

Poster un commentaire

(obligatoire)

(obligatoire)