Est-il possible de changer l'ordre des blocs déjà existants via le fichier local.xml? Je sais que vous pouvez changer l'ordre d'un bloc avec l'attribut after ou before, mais comment peut-on changer ces attributs de blocs existants. Par exemple, si je veux placer le bloc de navigation en couches sous le bloc d'abonnement à la newsletter dans la colonne de gauche, comment est-ce que je ferais cela?changer l'ordre des blocs via le fichier local.xml dans magento
Répondre
Vous devez effectuer une petite astuce, enlever le bloc de l'enfant et l'ajouter dans la nouvelle position de:
<reference name="parent.block.name">
<action method="unsetChild">
<alias>child_block_alias</alias>
</action>
<action method="insert">
<blockName>child.block.name</blockName>
<siblingName>name_of_block</siblingName>
<after>1</after>
<alias>child_block_alias</alias>
</action>
</reference>
Cette disposition instruction XML fait ce que vous voulez. Regardez cette courte référence des paramètres pour insert
méthode:
blockName
est votre bloc nom unique à travers la mise en page,product.view
par exemplesiblingName
est un bloc nom unique, qui est existe déjà dans l'insertion bloc cible, utilisé pour le positionnement de votre bloc. Laissez vide pour l'afficher en haut ou en bas.after
est un identifiant booléen de la position du bloc. Si égale à1
, le bloc sera ajouté aprèssiblingName
ou en bas de la liste des enfants sisiblingName
est videalias
est l'alias de votre bloc, si elle est vide, le nom du bloc sera utilisé.
Quelques exemples:
Déplacer panier bloc barre latérale après les produits récemment consultés
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
<action method="insert">
<blockName>cart_sidebar</blockName>
<siblingName>right.reports.product.viewed</siblingName>
<after>1</after>
</action>
</reference>
Déplacer panier bloc de barre latérale avant que les produits récemment consultés
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
<action method="insert">
<blockName>cart_sidebar</blockName>
<siblingName>right.reports.product.viewed</siblingName>
<after>0</after>
</action>
</reference>
Déplacer panier bloc de barre latérale à la fin du bloc droit
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
<action method="insert">
<blockName>cart_sidebar</blockName>
<siblingName></siblingName>
<after>1</after>
</action>
</reference>
Déplacer panier bloc de barre latérale en haut du bloc gauche
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
</reference>
<reference name="left">
<action method="insert">
<blockName>cart_sidebar</blockName>
</action>
</reference>
plaisir à travailler avec Magento!
Vous pouvez supprimer le bloc de navigation en couches précédent et ajouter un nouveau bloc de navigation en couches après le bloc bulletin.
<reference name="left">
<remove name="catalog.leftnav" />
<block type="catalog/layer_view" name="catalog.leftnavcustom" after="left.newsletter" template="catalog/layer/view.phtml"/>
</reference>
Notez que j'utilise un nom personnalisé pour le nouveau bloc.
La réponse acceptée n'a pas fonctionné pour moi (EE1.14), mais quelque chose d'approchant, ceci:
<wishlist_index_index>
<reference name="customer.wishlist.items">
<action method="unsetChild">
<name>customer.wishlist.price</name>
</action>
<action method="insert">
<blockName>customer.wishlist.price</blockName>
<after>customer.wishlist.qty</after>
</action>
</reference>
</wishlist_index_index>
Même si je suis conscient du fait que le nom des arguments d'action ne sont pas pertinents, vous avez utilisé s/subling/frères et soeurs/g tout au long :) – Nick
@ Nick, oui , seul l'ordre des arguments est important, le nom des arguments n'est pas utilisé dans l'appel de la méthode. –
Nice, cela fonctionne parfaitement. Merci aussi pour les exemples! –