Saya mencoba mengganti file app/code/Magento/Theme/view/frontend/layouts.xml

Saya tidak ingin memperpanjang file ini, saya ingin menimpanya sehingga beberapa layout desain dasar tidak tersedia di admin.

1
Shawn Northrop 12 Desember 2017, 00:10

1 menjawab

Jawaban Terbaik

Alih-alih mengesampingkan layouts.xml, saya akhirnya melakukan yang berikut

Buat Module baru: app/code/<Vendor>/Cms

Buat file: app/code/<Vendor>/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;
    }
}

Ini akan mendapatkan $options dan kemudian menghapus apa pun yang ada di larik $remove berdasarkan $option['value']

Untuk menjalankan ini, Anda perlu mengganti bagian dari app/code/Magento/Cms/view/adminhtml/ui_component/cms_page_form.xml

Untuk melakukan ini, buat file: app/code/<Vendor>/Cms/view/adminhtml/ui_component/cms_page_form.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>

Kami sekarang memberi tahu bidang ui_component itu untuk menggunakan Model baru kami untuk mengambil opsi.

Anda juga dapat membuat file app/code/<Vendor>/Cms/view/adminhtml/ui_component/cms_page_listing.xml

<?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>
1
Shawn Northrop 13 Desember 2017, 01:02