Удалить глобальные сообщения не работают

magento.stackexchange https://magento.stackexchange.com/questions/1421

  •  16-10-2019
  •  | 
  •  

Вопрос

Мне нужно удалить глобальные сообщения. Я поместил следующее на local.xml

<remove name="global_messages" />
<remove name="messages" />

Но сообщения все еще появляются. Я также пытался прокомментировать следующие строки в page.xml

<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>

который также не сработал. Уведомление о сообщениях все еще появляются. Откуда все еще поступают, если прокомментированы в page.xml? И да, я сделал смысл Magento Cash.

Это было полезно?

Решение

Это не работает, потому что ... например, на странице просмотра продукта этот шаблон отображается: catalog/product/view.phtmlАнкет Этот шаблон содержит в верхней части этой линии:

<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>

А также $this->getMessagesBlock() определяется в Mage_Core_Block_Abstract И это похоже на это:

    public function getMessagesBlock()
    {
        if (is_null($this->_messagesBlock)) {
            return $this->getLayout()->getMessagesBlock();
        }
        return $this->_messagesBlock;
    }

Это означает, что он вызывает: Mage_Core_Model_Layout::getMessagesBlock();

Этот последний метод

    public function getMessagesBlock()
    {
        $block = $this->getBlock('messages');
        if ($block) {
            return $block;
        }
        return $this->createBlock('core/messages', 'messages');
    }

Это означает, что если блок с имени «Сообщения» не найден в макете, создается и возвращается.

Я вижу 2 возможных решения здесь:

  1. Измените все файлы шаблонов и удалите <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>. Анкет Но я бы не пошел по этой дороге. Это много времени, и вы можете что -то пропустить.
  2. Переопределить «стиль магенто» метод: Mage_Core_Block_Messages::getGroupedHtml() Чтобы вернуть пустую строку.

Сначала я подумал о переоценке Mage_Core_Model_Layout::getMessagesBlock() ничего не вернуть, если блок не в макете, но вы получите ошибки при звонке ->getGroupedHtml() на не объекте.

Но вы можете попробовать переоценить Mage_Core_Model_Layout::getMessagesBlock() Чтобы вернуть простой core/template Блок, который не имеет метода getGroupedHtml() Метод и вернет нуль при вызове. (Это было бы третьим решением.)

Другие советы

Или вы можете добавить XML неиспользованный блок, как

<block type="core/messages" name="grab_messages" />

перед старыми блоками. Потому что первым примером core/messages Захватите все сообщения и очистите сообщения из сеанса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top