I have a custom module with several content pages, that link to each other and should show up in customer account. The first one works fine, I have a link in the menu to it and it shows up next to the menu as it should. The other pages show up above the menu, pushing the menu to the bottom. The layout files are the same. The only difference is, that they don't have a link in the customer account menu.
So, for the one that works, the div shows up before the div.sidebar-menu, as a sibling to it - and that displays correctly.
The other content shows up in a div that is a parent to div.sidebar-menu and the content shows up above the menu. Does anyone know, how I can fix this?
Here is the layout for the one that works:
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="2columns-left"> <update handle="customer_account"/> <body> <referenceBlock name="page.main.title"> <action method="setPageTitle"> <argument translate="true" name="title" xsi:type="string">My Index Page</argument> </action> </referenceBlock> <referenceContainer name="page.messages"> <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/> </referenceContainer> <referenceContainer name="content"> <block type="core/template" class="[Vendor]\[ModuleName]\Block\ShowAll" name="modulename_index_index.view" before="div.sidebar-main" template="Vendor_ModuleName::index.phtml" cacheable="false" /> </referenceContainer> </body> </page>
Here is the layout for the one that doesn't work:
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="2columns-left"> <update handle="customer_account"/> <body> <referenceBlock name="page.main.title"> <action method="setPageTitle"> <argument translate="true" name="title" xsi:type="string">Add New Page</argument> </action> </referenceBlock> <referenceContainer name="page.messages"> <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/> </referenceContainer> <referenceContainer name="content"> <block type="core/template" class="[Vendor]\[ModuleName]\Block\AddNew" name="modulename_index_index.view" before="div.sidebar-main" template="Vendor_ModuleName::new.phtml" cacheable="false" /> </referenceContainer> </body> </page>
Solved! Go to Solution.
You have to replace modulename_index_index.view with your custom new name in your block.
If two block with same name exist then its override and not working as expected.
Also type="core/template" is not support in magento 2 so its ignore.
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="2columns-left"> <update handle="customer_account"/> <body> <referenceBlock name="page.main.title"> <action method="setPageTitle"> <argument translate="true" name="title" xsi:type="string">Add New Page</argument> </action> </referenceBlock> <referenceContainer name="page.messages"> <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/> </referenceContainer> <referenceContainer name="content"> <block class="[Vendor]\[ModuleName]\Block\AddNew" name="modulename_index_index.new" before="div.sidebar-main" template="Vendor_ModuleName::new.phtml" cacheable="false" /> </referenceContainer> </body> </page>
Clear cache and check again.
if issue solved, click Kudos/Accept as solutions.
Sorry, they both have different names. One is [modulename]_index_index, the other is [modulename]_index_add.
Please show your final xml file code? which code contains xml for both handle?
Thanks.