2017-12-11 6 views
0

Ich versuche, die Datei app/code/Magento/Themen/view/Frontend/layouts.xmlMagento 2: Wie überschreiben ich layouts.xml

Ich möchte nicht außer Kraft zu setzen, diese Datei erweitern, ich will um sie zu überschreiben, so dass einige der Basisdesign-Layouts im Admin nicht verfügbar sind.

Antwort

0

Statt layouts.xml vorran landete ich

ein neues Module Erstellen Sie wie folgt vorgehen up: app/code/<Vendor>/Cms

Erstellen Sie die Datei: 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; 
    } 
} 

Dies wird die $options und dann jede entfernen, die sind im $remove Array basierend auf dem $option['value']

Um diese Sicht zu haben, müssen Sie einen Teil app/code/Magento/Cms/view/adminhtml/ui_component/cms_page_form.xml

Dazu erstellen Sie die Datei zu überschreiben: 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> 

Wir sind jetzt, dass ui_component Feld sagen, unser neues Modell verwenden, die zum Abrufen Optionen.

Sie können auch die Datei 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> 
erstellen