Как получить глобальные сообщения на странице сравнения продуктов, блок getmessagesблок пуст
Я пытаюсь получить глобальные сообщения на странице сравнения продуктов , но ни одно из сообщений не отображается, вместо этого все они появляются на любой последующей странице, которую я собираюсь, после создания сообщений, например, с удалением продукта из сравнения. Я понимаю, что это нормальное поведение для Magento, потому что обычно страница сравнения имеет шаблон всплывающего окна, но я setTemplate
к 1column.phtml
в моем local.xml
. Теперь мне нужно, чтобы там тоже появлялись глобальные сообщения. Я включил:
<?php echo $this->getMessagesBlock()->getGroupedHtml(); ?>
До catalog/product/compare/list.phtml
, но сообщения отображаются только на любой последующей странице, а не на странице списка сравнения.
Как я узнал отсюда, вы можете добавлять пользовательские сообщения. Так я и сделал
$this->getMessagesBlock()->addError('Test Error!');
echo $this->getMessagesBlock()->getGroupedHtml();
Теперь эта пользовательская ошибка отображается так, как должна, но ни одно из других сообщений не отображается. Как я могу заставить все сообщения сеанса отображаться на странице сравнения?
1 answers
Для появления сообщений вам необходимо вызвать это в контроллере перед вызовом renderLayout()
$this->initLayoutMessages('catalog/session');
Это подскажет Magento отображать сообщения, установленные для определенного типа сеанса. В приведенном выше примере Magento указывает отображать сообщения, установленные для сеанса каталога.
Другими вариантами являются customer/session
, core/session
, checkout/session
, tag/session
и adminhtml/session
и admin/session
(для серверной части).
Вы можете вызвать этот метод с массивом параметров
$this->initLayoutMessages(array('catalog/session', 'customer/session'));
В заключение, если вы хотите, чтобы отображались сообщения в списке сравнения вы должны переопределить контроллер сравнения продуктов или использовать событие controller_action_layout_render_before_catalog_product_compare_index
и ввести необходимые сообщения сеанса.