web-dev-qa-db-fra.com

Magento - supprimer le bloc en utilisant la mise à jour XML

Comment utiliser un fichier xml de mise en page pour supprimer un bloc déjà existant? Plus précisément, je souhaite supprimer le bloc nommé "currency" du bloc nommé "top.switches". Il est inséré dans le fichier directory.xml, comme ceci:

<default>
    <reference name="top.switches">
        <block type="directory/currency" name="currency" before="store_language" template="directory/currency.phtml"/>
    </reference>
    <reference name="head">
        <block type="core/template" name="optional_Zip_countries" as="optional_Zip_countries" template="directory/js/optional_Zip_countries.phtml" />
    </reference>
</default>
21
Benubird

Il existe deux méthodes pour supprimer un bloc défini dans un fichier xml de mise en page, via un autre fichier xml:

<default>
    <reference name="top.switches">
        <action method="unsetChild"><name>currency</name></action>
    </reference>
</default>

Et la façon dont vous êtes conventionnellement censé le faire:

<default>
    <reference name="top.switches">
        <remove name="currency" />
    </reference>
</default>

Vous pouvez trouver une explication des différents éléments xml de mise en page ici , mais cela ne couvre pas les méthodes disponibles pour la balise action. Pour cela, vous devez regarder la classe de bloc app/code/core/Mage/Core/Block/Abstract.php, qui présente toutes sortes de fonctions utiles telles que unsetChild, unsetCallChild, insert, sortChildren, etc.

37
Benubird

ajoutez un fichier nommé local.xml dans votre répertoire de mise en page. puis dans local.xml, vous pouvez supprimer n'importe quel bloc avec la balise "remove". BTW la balise de suppression doit être entre "mise en page" et "par défaut" alors le fichier doit être:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
   <default>
     <remove name="BLOCK_NAME" />
  </default>
</layout>
8
Ahmed Samir