Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[TUTO] Gestion de la homepage
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 12345678...11
SUJET:

[TUTO] Gestion de la homepage

***
#3688
Gabriiiel
I love Magento.
Expert Magento
Messages: 4118
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin gabriel.bouhatous Formation Magento Audit Conseil gabriel.bouhatous Ask me :) Lieu: Paris

[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 112  
Bonsoir,

Quelques informations sur la présentation de sa homepage notamment pour ce qui est de l'affichage de produits

Je conseillerais de gérer la homepage uniquement avec les fichiers .phtml que l'on y inclus. Cela permet d'avoir une homepage plus dynamique, et donc, à priori, qui nécessitera moins de mise à jour.

I) Comment afficher des produits sur la homepage

Il existe un bug au niveau de la gestion de block avec Magento, qui fait le code suivant :

Code :


{{block type="catalog/product_list" category_id="1" template="catalog/product/list.phtml"}}

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



... résulte en un double affichage des produits de la catégorie 1 !

Une solution consiste à :

- gérer sa homepage à travers des .phtml
- insérer un petit bout de code qui permet de résoudre le bug.

Mettons que nous avons deux catégories différentes, ayant pour ID les numéros 1 et 2, et pour lesquelles nous voulons afficher des produits en page d'accueil.


1) Créer le(s) .phtml


Vous pouvez utiliser le phtml nommé "list", situé dans app\design\frontend\NOM_DE_VOTRE_INTERFACE\NOM_DE_VOTRE_THEME\template\catalog\product.

Avantage : rapide
Inconvénient : vous ne pouvez pas gérer l'affichage niveau homepage sans que cela change l'affichage de la liste de produits

Pour cela je conseille de créer, dans votre dossier de templates, un nouveau dossier "homepage", et d'y placer une copie de list.phtml, que vous renommerez "homepage" ou autre nom de fichier explicite

Ce nouveau "list.phtml" sera alors à modifier pour avoir un affichage correct sur votre homepage.

Si vous avez plusieurs catégories de produits à afficher, dans le sens de catégorie "commerciale" (= des produits que l'on va devoir présenter différemment, plutôt avec telle information, plutôt avec une autre), vous pouvez créer encore un nouveau phtml, toujours à placer dans le répertoire homepage. Toujours dans l'idée de pouvoir gérer au mieux l'apparence de la page d'accueil...


2) Le bout de code "magique"

Il permet de remettre la variable à "NULL" ce qui empêche qu'un block prenne l'ID d'un autre.

<?php
Mage::getSingleton('catalog/layer')->setData("product_collection",NULL);
$this->_productCollection = null;
$_productCollection=$this->getLoadedProductCollection();
?>


Ce bout de code est à placer tout en haut de votre fichier .phtml (que ce soit list.phtml, homepage.phtml, il doit s'agir du .phtml qui gère l'affichage des produits sur votre page d'accueil ;) )


3) La page statique

Pour afficher les produits des 2 catégories il faudra insérer dans le contenu de la homepage ce code :

Code :

{{block type="catalog/product_list" category_id="1" template="CHEMIN_DE_VOTRE_PHTML/VOTRE_PHTML.phtml"}}

{{block type="catalog/product_list" category_id="2" template="CHEMIN_DE_VOTRE_PHTML/VOTRE_PHTML.phtml"}}



Ce qui peut donner par exemple :

Code :

{{block type="catalog/product_list" category_id="1" template="catalog/product/list.phtml"}}

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



Ou si vous avez utilisé des .phtml différents :

Code :

{{block type="catalog/product_list" category_id="1" template="homepage/cat1.phtml"}}

{{block type="catalog/product_list" category_id="2" template="homepage/cat2.phtml"}}



Et voilà vous aurez une homepage sans bug

II) Inclure des "infoboxes statiques" dans sa page d'accueil

C'est très simple.


1) Créer le .phtml à inclure dans l'infoboxe statique


Disons que vous souhaitez afficher sur votre page d'accueil un bloc où seraient affichées, de manière aléatoire, des images de vos produits avec un lien menant à la page du produit affiché.

Il s'agirait alors de créer un .phtml, dans le dossier template/homepage, qui gererait cette affichage aléatoire.


2) Créer l'infoboxe statique et y inclure un appel du .phtml


Créez votre infoboxe statique, nommée par exemple "affichage-produits". Donnez lui un titre sans espace, et un identifiant égal au titre. Activez-la, associez-la à la Vue Magasin souhaitée (ou à tout le Site Web), et insérez en contenu :

Code :

{{block type=core/template template=homepage/affichage-produits.phtml}}


Sauvegardez.


3) Afficher le bloc statique sur votre homepage


Editez votre homepage, et dans l'onglet de gauche ("Design Personnalisé" ), insérez le code suivant :

<reference name="root">
<block type="cms/block" name="affichage-produits" as="affichage-produits">
<action method="setBlockId"><id>affichage-produits</id></action>
</block>
</reference>

Cela le placera... nul part pour l'instant . Sauvegardez et passez à l'étape 4.


4) Créez un nouveau .phtml de gestion de la homepage


Les pages Magento sont gérées grâce à des .phtml "généraux". A savoir :

- 1column.phtml
- 2columns-left.phtml
- 2columns-right.phtml
- 3columns.phtml

La homepage étant une page particulière, il convient de créer un template spéciale, unique. Vous pouvez le placer dans le même répertoire que ces templates généraux, c'est à dire dans le dossier "template/page".

On aurait ainsi : template/page/homepage.phtml

En guise de contenu, copiez le .phtml général de votre choix. Si votre homepage doit avoir 3 colonnes, copiez le .phtml "3columns.phtml"

Mettons que vous voulez afficher votre bloc qui affiche aléatoirement les images de vos produits sur la doite.

Repérez dans votre nouveau .phtml le passage suivant :
Code :


<div class="col-right side-col">



Et insérez-y :

Code :

 <?=$this->getChildHtml('affichage-produits')?>


Attention, la place à laquelle vous ajoutez ce code détermine la place d'apparition de votre bloc.

Si vous souhaitez que votre bloc apparaisse à gauche, placez le dans la division commencant par :

Code :


<div class="col-left side-col">



Etc.

Sauvegardez.

5) Faites un petit module qui vous permettra de choisir ce nouveau template dans la liste déroulante des templates existants

Créez un .XML nommé "Mage_Templates.xml" avec ce contenu :

Code :

<config>
    <modules>
        <Mage_Templates>
            <active>true</active>
            <codePool>local</codePool>
        </Mage_Templates>
    </modules>
</config> 



Placez-le dans app/etc/modules.

Créez ensuite un .XML nommé "config.xml" avec ce contenu :

Code :

<config>
    <global>
        <cms>
            <layouts>
                <new_template1>
                    <label>Homepage</label>
                    <template>page/homepage.phtml</template>
                </new_template1>
            </layouts>
        </cms>   
    </global>
</config> 



Attention : le code placé entre les balises <template></template> peut varier selon ce que vous avez choisi de faire

Incluez ce .xml dans un dossier nommé "etc", que vous placerez lui-même dans un dossier nommé "Templates".

Placez ensuite ce dossier "Templates" dans app/code/local/Mage/

Vous aurez au final app/code/local/Mage/Templates/etc/config.xml

Cette manipulation permet à Magento de trouver ce "module" qui est considéré comme extension locale.


6) Au final


Retournez sur l'édition de votre homepage. Dans la liste déroulante vous trouverez votre template "homepage". Sélectionnez-le, et vous verrez les changements...

III) Annexes

Quelques snippets de code qui peuvent aider. Ils sont à placer dans la section "Design personnalisé" de la page que vous souhaitez mettre à jour au niveau de son layout.

Retirer le bloc de comparaison de produit se trouvant à gauche

Code :

<reference name="left">
            <action method="unsetChild"><alias>catalog.compare.sidebar</alias></action>
           </reference>



Retirer le bloc panier se trouvant à droite

Code :

<reference name="right">
            <action method="unsetChild"><alias>cart_sidebar</alias></action>
           </reference>



Voilà.

Je reconnais que c'est assez laborieux dans l'état actuel des choses mais avec ces quelques informations on peut palier au manque de simplicité actuel du système...

  • Contributeur : Gabriel

  • La reproduction de cet article n'est pas permise, hors autorisation expresse de Fragento.
 
Dernière édition: 25/03/09 à  06:25 Par Gabriiiel.
Expert Magento @ The e-Commerce Academy

L'administrateur a désactivé l'accès public en écriture.
#3691
Otaugames
Gold Boarder
Messages: 168
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Sim Emporium Lieu: Troyes Date anniversaire: 28/06

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 6  
Merci pour ce tuto très complet Gabriiiel !
 
L'administrateur a désactivé l'accès public en écriture.
#3694
Max
Gold Boarder
Messages: 313
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Aubagne

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 15  
merci Gabriiiel
 
L'administrateur a désactivé l'accès public en écriture.
#3699
Arobanet
Fresh Boarder
Messages: 15
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 0  
Merci pour les conseils et pour ce tuto très instructif ;)
 
L'administrateur a désactivé l'accès public en écriture.
#3700
phy4me
Gold Boarder
Messages: 194
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin IRASALE irasalenet@gmail.com Lieu: Morocco Date anniversaire: 01/01

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 5  
Un excellent travail, Merci
 
Irsale Abdel
www.irsale.eb2a.com
L'administrateur a désactivé l'accès public en écriture.
#3706
Gabriiiel
I love Magento.
Expert Magento
Messages: 4118
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin gabriel.bouhatous Formation Magento Audit Conseil gabriel.bouhatous Ask me :) Lieu: Paris

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 112  


N'hésitez pas si un point n'est pas clair où si j'ai oublié un élément car j'ai fais de mémoire xD

Mais normalement ca marche
 
Expert Magento @ The e-Commerce Academy

L'administrateur a désactivé l'accès public en écriture.
#3727
Jumentfolle
Gold Boarder
Messages: 170
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 9 Mois
Karma: 0  
C'est ça tes 2/3 bidules? Impressionnant!
 
L'administrateur a désactivé l'accès public en écriture.
#3864
zerax
Fresh Boarder
Messages: 9
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[TUTO] Gestion de la homepage

Il y a 9 Années, 8 Mois
Karma: 0  
J'ai adopté la première solution pour afficher des produits sur la home.
Par contre vu que l'on place ces produits dans une certaine categorie et que le calcul de l'url du produit se fait par rapport a cette categorie on obtiens l'url de la categorie que l'on affiche sur la page d'accueil ( même alors que celle-ci est désactivée, normal pour ne pas que ca apparaisse dans le menu )

J'ai donc essayer de retracer le calcul de l'url du produit mais je bloque un peu la ...
En fait il ne faudrait modifier le calcul de l'url mais la categorie associée au produit lors du calcul de la collection de produits.

Vous auriez un indice sur la ou ca se fait ?
Merci
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 12345678...11
Modérateur: Gabriiiel, ILOA, zuiko