Templates Magento 2:如何覆盖layouts.xml

Templates Magento 2:如何覆盖layouts.xml,templates,layout,magento2,Templates,Layout,Magento2,我试图覆盖app/code/Magento/Theme/view/frontend/layouts.xml文件 我不想扩展此文件,我想覆盖它,使一些基本设计布局在管理中不可用。而不是覆盖layouts.xml我最后执行了以下操作 创建新的模块:app/code//Cms 创建文件:app/code//Cms/Model/PageLayout.php <?php namespace <Vendor>\Cms\Model; use Magento\Cms\Model\Page\

我试图覆盖app/code/Magento/Theme/view/frontend/layouts.xml文件


我不想扩展此文件,我想覆盖它,使一些基本设计布局在管理中不可用。

而不是覆盖
layouts.xml
我最后执行了以下操作

创建新的
模块
app/code//Cms

创建文件:
app/code//Cms/Model/PageLayout.php

<?php

namespace <Vendor>\Cms\Model;

use Magento\Cms\Model\Page\Source\PageLayout as BasePageLayout;

class PageLayout extends BasePageLayout{

    public function toOptionArray()
    {
        $options = parent::toOptionArray();
        $remove = [
            "empty",
            "1column",
            "2columns-left",
            "2columns-right",
            "3columns",
        ];

        foreach($options as $key => $layout){
            if(in_array($layout["value"], $remove)){
                unset($options[$key]);
            }
        }

        return $options;
    }
}
我们现在告诉ui_组件字段使用我们的新模型来检索选项

您还可以创建文件
app/code//Cms/view/adminhtml/ui\u component/Cms\u page\u listing.xml

<?xml version="1.0" encoding="UTF-8" ?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="design">
        <field name="page_layout">
            <argument name="data" xsi:type="array">
                <item name="options" xsi:type="object"><Vendor>\Cms\Model\PageLayout</item>
            </argument>
        </field>
    </fieldset>
</form>
<?xml version="1.0" encoding="UTF-8"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <columns name="cms_page_columns">
        <column name="page_layout">
            <argument name="data" xsi:type="array">
                <item name="options" xsi:type="object"><Vendor>\Cms\Model\PageLayout</item>
            </argument>
        </column>
    </columns>
</listing>

\Cms\Model\PageLayout