Блок Magento не загружается - PullRequest
1 голос
/ 22 июня 2019

Я создаю свой первый модуль в Magento и у меня есть пара вопросов, связанных с процессом.

До того, как я попробовал модуль, у меня был шаблон, и я загружал его в app\design\frontend\rwd\default\layout\local.xml с этим кодом

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="after_body_start">
            <block type="checkout/cart_sidebar" template="mgw/mwCartRebuild.phtml"/>
        </reference>
    </default>
</layout>

Жизнь была хорошей, и все работало, пока я не решил, что мне нужно расширить класс Mage_Checkout_Block_Cart_Sidebar.

Итак, я создаю Модуль для этого. Вот мой код.

Блок app\code\local\mgw\Cart\Block\ModalCart.php

<?php 
class mgw_Cart_Block_Modal_Cart extends Mage_Checkout_Block_Cart_Sidebar{
    public function __construct(){
        perent::__construct();
        $this->setTemplate('mgw/mwCartRebuild.phtml');
    }
}

config.xml app\code\local\mgw\Cart\etc\config.xml

<config>
    <global>
        <modules>
            <mgw_Cart>
                <version>0.0.0</version>
            </mgw_Cart>
        </modules>
        <blocks>
            <mgw_Cart>
                <class>mgw_Cart_Block_Modal_Cart</class>
            </mgw_Cart>
        </blocks>
        <helpers>
            <cart>
                <class>mgw_Cart_Helper</class>
            </cart>
        </helpers>
    </global>
</config>

Новый local.xml app\design\frontend\rwd\default\layout\local.xml

<layout version="0.1.0">
    <default>
        <reference name="after_body_start">
            <block type="cart/modal_cart"/>
        </reference>
    </default>
</layout>

Модуль xml app\etc\modules\mgw_Cart.xml

<config>
    <modules>
        <mgw_Cart>
            <active>true</active>
            <codePool>local</codePool>
            <depends />
        </mgw_Cart>
    </modules>
</config>

Теперь мой шаблон не загружается. Я проверил Admin, чтобы видеть, загружается ли мой Модуль, и это перечислено. Так почему мой шаблон не загружается?

Мои вопросы:

  • Могу ли я даже расширить основной блок, как я пытаюсь?
  • Как я могу загрузить свой блок / шаблон?

1 Ответ

1 голос
/ 26 июня 2019

Я новичок в Magento и могу помочь вам с вашей проблемой. Прежде всего, я бы порекомендовал использовать четкую и простую номенклатуру для ваших пользовательских модулей и файлов, «ModalCart.php» можно переименовать в «Modalcart.php», чтобы избежать каких-либо проблем со ссылками.

Если вы хотите расширить / переопределить класс Mage, вам нужно указать его в config.xml вашего модуля, например:

<blocks>
    <checkout>
        <rewrite>
            <cart_sidebar>PkgName_ModuleName_Block_YourClassThatOverrides</cart_sidebar>
        </rewrite>
    </checkout>
</blocks>

в приведенном выше коде вы заявляете, что собираетесь переписать блок checkout / cart_sidebar с вашим новым классом.

Итак, это был config.xml, теперь вы собираетесь создать переопределяющий класс. В каталоге Block вашего модуля создайте файл класса .php, который расширяет / переписывает базовый класс:

<?php
  class PkgName_ModuleName_Block_YourClassThatOverrides extends Mage_Checkout_Block_Cart_Sidebar {
      // check for the methods to rewrite or create new methods
  }

и для вашего последнего вопроса о том, как установить конкретный шаблон или макет: Прежде чем приступить к написанию кода, мой личный совет - изучать одно и то же 3 или 4 раза из разных источников, а затем кодировать его 3 или 4 раза, пока вы не сможете понять и запомнить весь контент. Так что для раздела макета / шаблона я предлагаю прочитать эту ветку Alan Storm: https://alanstorm.com/layouts_blocks_and_templates/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...