2016-04-13 6 views
1

Magento 1Bausteine ​​einfügen in benutzerdefinierte Orte in Magento2

kann ich local.xml wie so bearbeiten:

<default> 
    <reference name="root"> 
     <block type="core/template" name="above_main" template="page/html/banner.phtml" /> 
    </reference> 
</default> 

ich wie so eine Vorlagendatei bearbeiten:

<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>> 
<?php echo $this->getChildHtml('after_body_start') ?> 
<div class="wrapper"> 
    <?php echo $this->getChildHtml('global_notices') ?> 
    <div class="page"> 
     <?php echo $this->getChildHtml('header') ?> 

     <?php // MY EDIT: ?> 
     <?php echo $this->getChildHtml('above_main'); 

     <div class="main-container col2-left-layout"> 
      <div class="main"> 
       <?php echo $this->getChildHtml('breadcrumbs') ?> 

<!-- rest of page... --> 

Dieses endet up mit der Datei unter page/html/banner.phtml in die Vorlage an meiner eigenen benutzerdefinierten Position eingefügt werden, above_main.

OK, so meine Frage ist:

Wie kann ich dies tun in Magento 2?

+0

Sie können default.xml verwenden, um dies zu erreichen. – amitshree

+1

@amitshree zeigen Sie mir, wie und ich werde Ihnen ein Häkchen geben – Jimmery

Antwort

5

In Magento 2 ist keine local.xml mehr vorhanden. Magento hat stattdessen das gesamte XML innerhalb des Moduls ausgewählt. Wenn Sie XML für ein Modul ändern möchten, müssen Sie eine neue XML-Datei mit demselben Namen in Ihrem entsprechenden Themenverzeichnis erstellen und dort die Änderungen vornehmen.

Es gibt viele Möglichkeiten, Ihre Vorlage in eine bestimmte Seite einzufügen.

Alternative 1
Nehmen wir an, Sie eine Vorlage auf Produktdetails Seite hinzufügen möchten. Sie müssen in Ihrem Modul eine neue XML-Datei catalog_product_view.xml erstellen. Sie XML-Code könnte wie folgt aussehen:

<?xml version="1.0"?> 
<body> 
    <referenceContainer name="product.info.main"> 
     <block class="Lapisbard\Catalog\Block\Product\View\Extra" 
       name="product.view.extra" 
       template="Lapisbard_Catalog::product/view/extra.phtml" 
       after="product.info.overview"> 
     </block> 
    </referenceContainer> 
</body> 

Hier bin ich ein eigenes Template auf der Produktseite einfügen. Sie können das Tag before/after verwenden, um Ihren Container nach Ihren Bedürfnissen zu sortieren, an dem Sie Ihre Vorlage platzieren möchten. Ähnlich können Sie Layoutdateien in Ihrem Modulaccount erstellen, um mit der Seite zu arbeiten. Bsp .: Sie können cms_index_index.xml für die Homepage verwenden.

Alternative 2
Sie können Ihre benutzerdefinierten Template-Datei in einem anderen Template-Datei mit folgenden Code aufrufen:

echo $this->getLayout() 
      ->createBlock('Lapisbard\Catalog\Block\Product\View\Extra') 
      ->setTemplate('Lapisbard_Catalog::product/view/extra.phtml') 
      ->toHtml(); 

Alternative 3
Werfen Sie einen Blick auf dieses Tutorial, das wie highlights können Sie Verwenden Sie default.xml, um strukturelle Änderungen vorzunehmen https://gielberkers.com/creating-blocks-in-magento-2/