2010-07-12 9 views
3

J'essaie d'utiliser mon fichier local.xml (où je fais toutes mes mises à jour à la disposition ) pour supprimer un bloc imbriqué dans un autre bloc. peut facilement supprimer un bloc via la balise <supprimer>, ou en utilisant la méthode unsetChild, mais je ne peux pas sembler supprimer un bloc qui est imbriqué dans un autre blocSuppression d'un bloc imbriqué dans un bloc via le fichier local.xml

Voici la ligne de code que j'essaie d'enlever (situé dans le fichier customer.xml ). en particulier, il est le bloc appelé "customer_account_dashboard_newsletter"

<customer_account_index translate="label"> 
     <label>Customer My Account Dashboard</label> 
     <update handle="customer_account"/> 
     <!-- Mage_Customer --> 
     <reference name="root"> 
      <action method="setTemplate"><template>page/2columns-left.phtml</template></action> 
     </reference> 
     <reference name="my.account.wrapper"> 
      <block type="customer/account_dashboard" name="customer_account_dashboard" template="customer/account/dashboard.phtml"> 
       <block type="customer/account_dashboard_hello" name="customer_account_dashboard_hello" as="hello" template="customer/account/dashboard/hello.phtml"/> 
       <block type="core/template" name="customer_account_dashboard_top" as="top" /> 
       <block type="customer/account_dashboard_info" name="customer_account_dashboard_info" as="info" template="customer/account/dashboard/info.phtml"/> 
       <block type="customer/account_dashboard_newsletter" name="customer_account_dashboard_newsletter" as="newsletter" template="customer/account/dashboard/newsletter.phtml"/> 
       <block type="customer/account_dashboard_address" name="customer_account_dashboard_address" as="address" template="customer/account/dashboard/address.phtml"/> 
       <block type="core/template" name="customer_account_dashboard_info1" as="info1" /> 
       <block type="core/template" name="customer_account_dashboard_info2" as="info2" /> 
      </block> 
     </reference> 

    </customer_account_index> 

Je sais que cela ne fonctionne pas en ce moment, mais voici mon point de départ (situé dans mon fichier local.xml):

<customer_account_index> 
    <reference name="my.account.wrapper"> 
      <action method="unsetChild"><name>customer_account_dashboard_newsletter</name></action> 
    </reference> 
</customer_account_index> 

Toute pensée? Je vous remercie.

Répondre

1

Je pense que vous faites référence au mauvais bloc. Vous devez référencer le bloc parent du bloc que vous voulez supprimer. Vous référencez le bloc parent du parent.

<customer_account_index> 
    <reference name="customer_account_dashboard"> 
    <action method="unsetChild"><name>customer_account_dashboard_newsletter</name></action> 
    </reference> 
</customer_account_index> 
+0

Ce ne fonctionne pas. Y a-t-il un autre moyen de le faire? – jdhaar

+0

Aussi ne fonctionne pas pour moi dans Magento 1.8. – KoviNET

1

Pour supprimer un bloc à l'intérieur d'un autre bloc, vous devez imbriquer les références. Par exemple:

<catalog_product_view> 
    <reference name="content"> 
     <reference name="product.info"> 
      <action method="unsetChild"><name>addtocart</name></action> 
     </reference> 
    </reference> 
</catalog_product_view> 

De même, le système ne reconnaît parfois pas le nom de bloc, vous devez donc utiliser l'alias dans l'action.

0

En général, si vous voulez supprimer bloc imbriqué, vous devez également les références des nids dans local.xml, dans votre cas, la syntaxe correcte serait:

<customer_account_index> 
    <reference name="my.account.wrapper"> 
     <reference name="customer_account_dashboard"> 
      <remove name="customer_account_dashboard_newsletter" /> 
     </reference> 
    </reference> 
</customer_account_index> 

Mais je remarque que la ligne suivante dans customer.xml

<block type="customer/account_dashboard_newsletter" name="customer_account_dashboard_newsletter" as="newsletter" template="customer/account/dashboard/newsletter.phtml"/> 

n'a pas pour effet d'afficher le bloc que vous souhaitez supprimer. Mais le bloc est plutôt ajouté à l'intérieur modèle customer/account/dashboard/info.phtml, qui est inclus par la ligne précédente customer.xml:

<block type="customer/account_dashboard_info" name="customer_account_dashboard_info" as="info" template="customer/account/dashboard/info.phtml"/> 

Si vous copiez customer/account/dashboard/info.phtml sur votre thème, vous pouvez supprimer le code qui affiche le bloc de bulletin d'information sur le tableau de bord:

<?php if($this->isNewsletterEnabled()): ?> 
0

pour retirer le bloc Bulletin de l'dashBoard client vous devez modifier le fichier

app/frontend/yourtemplate/modèle/client/compte/tableau de bord/info.phtml

et supprimer ce bloc de code

<?php if($this->isNewsletterEnabled()): ?> 
<div class="col-2"> 
    <div class="box"> 
     <div class="box-title"> 
      <h3><?php echo $this->__('Newsletters') ?></h3> 
      <a href="<?php echo $this->getUrl('newsletter/manage') ?>"><?php echo $this->__('Edit') ?></a> 
     </div> 
     <div class="box-content"> 
      <p> 
       <?php if($this->getIsSubscribed()): ?> 
        <?php echo $this->__("You are currently subscribed to 'General Subscription'.") ?> 
       <?php else: ?> 
        <?php echo $this->__('You are currently not subscribed to any newsletter.') ?> 
       <?php endif; ?> 
      </p> 
     </div> 
    </div> 
    <?php /* Extensions placeholder */ ?> 
    <?php echo $this->getChildHtml('customer.account.dashboard.info.extra')?> 
</div> 
<?php endif; ?>