Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Comment intercaler une div entre le header et content dans page accueil ? 
 
fredisap
Sr. Member
 
Total Posts:  88
Joined:  2008-10-20
France
 

Tout est dit dans le titre,
En fait j’ai modifié le fichier 2columns-right.phtml, en positionnant ma div où je voulais,
cela fonctionne, si ce n’est qu’elle apparait chaque fois que ce type de page est appelé
comment faire pour que cela soit seulement dans la page d’accueil ?

Merci pour vos réponses

 
Magento Community Magento Community
Magento Community
Magento Community
 
Boutik Circus
Member
 
Avatar
Total Posts:  72
Joined:  2008-10-06
France
 

Le plus simple serais de le mettre en haut de ton contenu sur ta page CMS mais si tu veux vraiment que ta div soit avant le contenu, tu ajoutes un appel de bloc à l’endroit souhaité dans ton fichier 2columns-right.phtml:

<?php echo $this->getChildHtml('ma_div'?>

Et dans CMS->Blocs statiques, tu créés un bloc avec <div>mon contenu</div> avec pour nom “mon_bloc”

Puis dans CMS->Gestion des pages->Ta pages d’accueil->Design personnalisé, tu ajoutes le code:

<block type="cms/block" name="cms_mon_bloc" as="ma_div">
    <
action method="setBlockId"><block_id>mon_bloc</block_id></action>
</
block>
 
Magento Community Magento Community
Magento Community
Magento Community
 
fredisap
Sr. Member
 
Total Posts:  88
Joined:  2008-10-20
France
 

Merci pour ton aide,
je ne comprends pas, ça ne marche pas ? rien ne s’affiche ?
j’ai exactement fais tout ce que tu m’as dis
dans le fichier 2columns-right j’ai écrit:

<!-- [end] header -->
<?php echo $this->getChildHtml('ma_div'?> 
        
<!-- [start] middle -->

puis dans CMS->Blocs statiques, j’ai créé un bloc avec comme contenu :

<div><h1>test positionnement div</h1></div>

avec pour nom “mon_bloc” ( champs identifiant)
statut activé

enfin dans CMS->Gestion des pages->home_page->Design personnalisé:
j’ai bien le code comme ceci:

<!--<reference name="content">
<
block type="catalog/product_new" name="home.catalog.product.new" alias="product_new" template="catalog/product/new.phtml" after="cms_page"/>
<
block type="reports/product_viewed" name="home.reports.product.viewed" alias="product_viewed" template="reports/home_product_viewed.phtml" after="product_new"/>
<
block type="reports/product_compared" name="home.reports.product.compared" template="reports/home_product_compared.phtml" after="product_viewed" />
</
reference><reference name="right">
<
action method="unsetChild"><alias>right.reports.product.viewed</alias></action>
<
action method="unsetChild"><alias>right.reports.product.compared</alias></action>
</
reference>-->
<
block type="cms/block" name="cms_mon_bloc" as="ma_div">
    <
action method="setBlockId"><block_id>mon_bloc</block_id></action>
</
block>

J’ai mal fait qqchose ?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Boutik Circus
Member
 
Avatar
Total Posts:  72
Joined:  2008-10-06
France
 

Non c’est moi....  wink

Pour la page CMS, voici le bon code

<reference name="root">
<
block type="cms/block" name="mon_bloc" as="ma_div">
    <
action method="setBlockId"><block_id>mon_bloc</block_id></action>
</
block></reference>
 
Magento Community Magento Community
Magento Community
Magento Community
 
fredisap
Sr. Member
 
Total Posts:  88
Joined:  2008-10-20
France
 

grin super c’est exactement ce que je voulais…

si je comprends bien chaque fois que je veux modifier la structure de la page d’accueil , en ajoutant un élément , je fais cette manip…

Mais comment cela se passe pour les autres pages ?

tu peux me dire que sont les types de block ? où je peux trouver la liste des type de block de magento ?  ex: block type="cms/block",
la balise reference (ex root dans magento c’est quoi ?)

et enfin que veux dire les balises actions et la propriete method
ex:<action method="unsetChild"> ou <action method="setBlockId"> existe t-il également une liste de methode qui decrit chaque action ?

En gros je cherche juste à comprendre le mecanisme de magento (relations entre layout et template) wink
et meme en cherchant sur internet des cours sur le xml, je ne trouve rien qui ressemble à ce qui est utilisé dans magento.

Vu que tu maitrises pas mal, pourrais tu me faire un petit cours théorique sur ce mecanisme....
merci d’aider un novice comme moi qui aimerait un jour pouvoir également aider les autres.j’en ai marre de poster des questions et jamais des réponses…

 
Magento Community Magento Community
Magento Community
Magento Community
 
Boutik Circus
Member
 
Avatar
Total Posts:  72
Joined:  2008-10-06
France
 

Non il n’y a pas de liste officiel de tous les types/méthodes/etc…
La seule doc existante sur les layouts/templates et le Designer’s Guide to Magento mais ca ne suffit pas vraiment pour bien comprendre.

Je ferais certainement un tuto la-dessus mais honnêtement, vu la quantité de travail que j’ai, ce ne sera pas avant un certain temps…

Le mieux pour comprendre comment ca fonctionne, c’est de regarder comment s’affiche un module existant ayant à peu près le même comportement de celui que tu souhaites faire.

Pour t’expliquer rapidement:
1- il faut créer un contenu, soit en CMS avec une bloc CMS, soit en dur avec un fichier .phtml
2- il faut appeler ce contenu quand tu en as besoin, c’est le rôle des fichier XML ou du “Design personnalisé” dans les page CMS.
Tu as de nombreux exemples dans les fichiers XML qui te permettent de comprendre comment affecter un bloc à une page ou à toutes les pages, comment enlever un bloc pour une pages spécifiques, etc…
3- et ensuite il faut positionner ce bloc au bon endroit, soit en l’appelant directement dans un .phtml avec getChildhtml(), soit en le positionnant par rapport aux autres blocs avec “after/before” dans le fichier XML.

Pour ta page d’accueil, la manip dessus te permet surtout de mettre un bloc en-dehors des contenants principaux (header, content, colonne droite, footer). Si tu veux juste ajouter un bloc dans la colonne de droite par ex, tu ne modifies pas 2columns-right.phtml et dans CMS->pages->design personnalisé tu mets:

<reference name="right">
<
block type="cms/block" name="mon_bloc" as="ma_div">
    <
action method="setBlockId"><block_id>mon_bloc</block_id></action>
</
block>
</
reference>

Bon courage et bon apprentissage !

 
Magento Community Magento Community
Magento Community
Magento Community
 
fredisap
Sr. Member
 
Total Posts:  88
Joined:  2008-10-20
France
 

merci de prendre du temps pour m’expliquer c’est super sympa, smile

j’ ai du mal à saisir la difference entre 2 et 3,

il faut appeler ce contenu quand tu en as besoin, c’est le rôle des fichier XML ou du “Design personnalisé” dans les page CMS.

et ensuite il faut positionner ce bloc au bon endroit, soit en l’appelant directement dans un .phtml avec getChildhtml(), soit en le positionnant par rapport aux autres blocs avec “after/before” dans le fichier XML.
.

c’est quoi la difference entre appeler et positionner ?

Désolé si mes questions peuvent paraitre stupides....

 
Magento Community Magento Community
Magento Community
Magento Community
 
Boutik Circus
Member
 
Avatar
Total Posts:  72
Joined:  2008-10-06
France
 

J’aurais plutôt dû dire “activer” que “appeler”.

Avec le fichier XML, tu dis entre-autres quand ton module doit être actif ou non, sur quelle page.

Par exemple, si tu veux un bloc CMS qui s’affiche sur toutes les pages en header, tu vas dans cms.xml et tu ajoutes ton bloc entre les balises <default><reference name="header"></reference></default>.
Pour un bloc qui s’affiche uniquement dans le header uniquement sur la page produit, c’est dans catalog.xml::
<catalog_product_view><reference name="header"></reference></catalog_product_view>.

Là, ton module sera actif mais ne s’affichera pas forcement. S’il s’affiche sans l’appeler dans un fichier .phtml (comme dans une colonne ou le footer) tu peux le positionner avec before/after dans le xml:
<reference name="footer">
<block type="cms/block" name="cms_footer_links" before="footer_links">
<action method="setBlockId"><block_id>footer_links</block_id></action>
</block>
</reference>
S’il ne s’affiche pas, il faut l’appeler dans le .phtml associé:

<block type="page/html_header" name="header" as="header">

                <
block type="page/template_links" name="top.links" as="topLinks"/>
                <
block type="core/text_list" name="top.menu" as="topMenu"/>
                <
block type="core/template" name="top.return" as="topReturn" template="page/html/return.phtml"/>
            </
block>
<div class="header-bg"></div>
<
div class="header-top-container">
        <
div id="logo"><a href="<?php echo $this->getUrl('') ?>"><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>"/></a></div>
                
<?php echo $this->getChildHtml('topReturn'?>
        
<class="no-display"><a href="#main"><strong><?php echo $this->__('Skip to Main Content'?> &raquo;</strong></a></p>
        
<?php echo $this->getChildHtml('topSearch'?>

        
<div class="quick-access">
            <
div class="shop-access">
                
<?php echo $this->getChildHtml('topLinks'?>
            
</div>
        </
div>
</
div>

<?php echo $this->getChildHtml('topMenu'?>
 
Magento Community Magento Community
Magento Community
Magento Community
 
fredisap
Sr. Member
 
Total Posts:  88
Joined:  2008-10-20
France
 

Encore une fois merci pour ta disponinibilté et ta patience
je vais essayer d’analyser ça tranquilement…

Car pour l’instant mon niveau se résume à une page html liée à un fichier css. (et encore ce n’est pas toujours évident le résultat red face)
donc là, pour comprendre les imbrications, c’est assez difficile de se visualiser ces mecanismes.

Mais avec du temps, du travail, et surtout un bon prof, je pense que l’on peut apprendre, du moins je ne demande qu’a apprendre…

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top