2010-07-12 7 views
3

Я пытаюсь использовать файл local.xml (где я делаю все мои обновления в макете ), чтобы удалить блок, который вложен в другой блок. можно легко удалить блок через тег <, удалив > или используя метод unsetChild, но я не могу удалить блок, который вложен в другой блок.Удаление блока, вложенного в блок через файл local.xml

Вот строка кода, которую я пытаюсь удалить (находится в файле customer.xml ). в частности, это блок называется "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> 

Я понимаю, что это не работает прямо сейчас, но вот моя точка (находится в моем файле local.xml):

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

Любые мысли? Спасибо.

ответ

1

Я думаю, вы ссылаетесь на неправильный блок. Вы должны ссылаться на родительский блок блока, который хотите удалить. Вы ссылаетесь на родительский блок родителя.

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

Это не работает. Есть ли другой способ сделать это? – jdhaar

+0

Также не работает для меня в Magento 1.8. – KoviNET

1

Чтобы отключить блок внутри другого блока, вам нужно вложить ссылки. Например:

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

Кроме того, иногда система не распознает имя блока, поэтому вы должны использовать псевдоним в действии.

0

В общем, если вы хотите удалить вложенный блок, вы должны также ссылки гнезда в local.xml, в вашем случае правильный синтаксис будет:

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

Но я заметил, что следующая строка в customer.xml

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

не влияет на отображение блока, который вы хотите удалить. Но блок вместо этого добавлен в customer/account/dashboard/info.phtml шаблон, который включен по предыдущей строке в customer.xml:

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

Если скопировать customer/account/dashboard/info.phtml к вашей теме вы можете удалить код, который отображает бюллетень блок на приборной панели:

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

чтобы удалить блок бюллетеня от DashBoard клиента вы должны изменить файл

приложение/интерфейс/YourTemplate/шаблон/клиент/счет/панель управления/info.phtml

и удалить этот блок кода

<?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; ?> 

 Смежные вопросы

  • Нет связанных вопросов^_^