magento block

Partager des données entre les controllers et les blocks dans Magento

Comme vous le savez peut-être, la solution e-commerce Magento a un système de template très puissant. Nous pouvons dire la même chose concernant la partie logique du sytème. Grosso modo Magento est composé d'environ 50 modules. Il y un module pour l'enregistrement d'une commande, un pour les clients, un pour les pages CMS etc. Un module est composé de plusieurs parties. La partie design, la partie controllers, blocks, models et helpers. Les controllers contiennent toutes les actions déclenchées lors de l'utilisation d'un module d'un site Magento. Quand nous avons l'url http://www.my-eshop.tld/index.php/a/b/c

cela signifie que le module a doit lancer l'action c contenue dans le controller b.

Les blocks servent à préparer les données pour les templates. Chaque template utilisée doit avoir un block. Les blocs peuvent être simples mais ils peuvent être également plus complexes. Dans certains cas, il peut être utile de déplacer des données du controller vers le block afin de ne pas devoir recalculer ces données.

Pour cela, nous pouvons utiliser une des fonctionnalités de Magento : les registres.

Dans le controller on enregistre notre données dans la variable nommée $data. Nous pouvons utiliser un registre comme cela :

Mage::register('MyData',$dat);

Dans le fichier du block, nous pouvons accéder aux données de cette variable en utilisant :

$data = Mage::registry('MyData');

C'est une petite astuce qui peut s'avérer être très utile.

Traduction par Laurent Clouet

Utiliser le CMS natif pour créer des contenus multilingues dans Magento

La solution e-Commerce Magento intègre nativement des fonctionnalités de CMS.

Deux types d'objet sont ainsi mis à votre disposition afin de créer les contenus de votre site Magento :

  • Les pages, qui vous permettent d'afficher des informations générales telles que vos conditions générales de vente, informations de contact, implantations de magasin, et caetera.
  • Les blocks statiques ("statiques" n'étant pas tout à fait le terme approprié comme nous le verrons plus bas, comprenez qu'il s'agit tout simplement de blocks dont le contenu est modifiable directement depuis le back-office, sans modification de code source php), qui vous permettent de saisir des informations devant être généralement affichées sur plusieurs pages, telles que pieds de pages, en-têtes, mais aussi des informations ponctuelles (fermeture prévisionnelle du site, promotions...).

Notez que ces objets, pages ou blocks statiques, peuvent contenir des éléments dynamiquement calculés et qu'il est même relativement aisé de mettre à disposition du webmaster en charge du contenu un panoplie de fonctions développées sur mesure (date et heure du jour, nombre d'internautes connectés, dernier article vendu...).

De surcroît, ces pages et blocks peuvent également contenir d'autres blocks, statiques (donc dont le contenu est modifiable ici) ou non (blocs d'articles, blocs de meilleures ventes Magento...).

Enfin, ces pages et blocs s'insèrent parfaitement dans la logique du design Magento et, à ce titre, pour un même identifiant (identifier) de page ou de bloc statique, vous pourrez (sans y être obligé) en créer une version par vue de magasin (Store View Name). Il devient alors très simple de créer un contenu spécifique pour chacune des langues de votre site internet Magento et le système affichera la version correspondant à la langue de l'internaute sans que vous n'ayiez eu à programmer la moindre ligne de code.

Bien entendu le système n'est pas exempt de défaut et on regrettera en particulier :

  • l'absence d'outil d'édition en texte riche,
  • l'impossibilité de gérer du contenu de manière hiérarchique,
  • le manque de gestion de formulaire en ligne.

Nous verrons donc très prochainement comment palier ces manques.