0

I need show success or error messages block at the top of the page before the header block. As of now it appears between the breadcrumbs and main block.

2 Answers 2

2

There are a couple of ways to do this. Here is one which requires a little layout xml and a new template at a minimum…

Layout:

<layout>
    <default>
        <reference name="after_body_start">
            <block type="core/template" name="top.messages" template="core/messages/top.phtml" before="-" />
        </reference>
    </default>
</layout>

Template: app/design/frontend/your_package/your_theme/template/core/messages/top.phtml

<?php $_messageCollection = $this->getMessagesBlock()->getMessageCollection() ?>

<?php if ($_messageCollection->count()): ?>
    <div>
        <?php
        echo $this->getMessagesBlock()->getGroupedHtml();
        $_messageCollection->clear();
        ?>
    </div>
<?php endif; ?>

Alternate way

add belwo line at app/design/frontend/your_package/your_theme/Magento_Theme/laout/default.xml

<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    .......

    <move element="page.messages" destination="after.body.start"  after="-"/>

    ......

</page>
4
  • why we need to create new phtml? its possible to move elements using XML right?
    – Sathish
    Commented Dec 26, 2018 at 6:44
  • There are a couple of ways to do this. Commented Dec 26, 2018 at 6:47
  • Updated answer. Commented Dec 26, 2018 at 7:28
  • Thank you the alternate way method worked for me...
    – Shami
    Commented Dec 27, 2018 at 4:28
1
<move element="page.messages" destination="after.body.start"  after="global_notices"/>

This will place it at the top of the page.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.