0

I want to make some adjustments to most of the custom created cms pages with some exceptions however.
To achieve this I added a block and removed another block from cms_page_view.xml
I want to revert this for all the exceptions, which are some of the default cms pages like imprint, no-route, cookie policy etc.
Because I do not want to keep multiple xml files with the same content I tried this approach: Cms page custom layout update file for multiple pages - Magento 2.3.4

This is my cms_custom_handle.xml in my theme's Magento_Cms/layout

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="cms.header" remove="true" />
        <referenceBlock name="page.main.title" remove="false"/>
    </body>
</page>

As you can see I want to remove a block I added in cms_page_view and "un-remove" another one.

Unfortunately this is not working. All CMS pages still apply the changes of cms_page_view and do not apply my custom handle updates.

Debugging the code I can see that the plugin is getting called and the condition for my cms block identifier resolves correctly and adds the custom handle to the layout updates of the result. I do not see the changes in the frontend unfortunately.

This is my di.xml

<type name="Magento\Cms\Helper\Page">
    <plugin sortOrder="1" name="noFinderPages" type="Vendor\Module\Plugin\Helper\PagePlugin"/>
</type>

and an extract of the Plugin

public function afterPrepareResultPage(\Magento\Cms\Helper\Page $subject, $result)
{
    if ($result instanceof \Magento\Framework\View\Result\Page) {
        if ($this->isHandleApplicable()) {
            $result->addHandle('cms_custom_handle');
        }
    }

    return $result;
}

Debugging the code I can see this in the $result->layout->_update->handles for the cms page with the identifier "impressum"

default
cms_page_view
cms_page_view_id_impressum
cms_custom_handle

Just for testing I created a cms_page_view_selectable with the same content for the impressum page and added it as custom layout update in the backend.
This works.
So I assume the .xml is not the problem and since the adding of the handle works as well, maybe there's a problem with the order in which the layout updates are being applied?
Since my custom handle update basically reverts the cms_page_view.xml I guess it's important that this is being applied last.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.