我正在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>
现在我的模板无法加载。我已经检查了管理员,以查看是否正在加载我的模块并列出该模块。那为什么不加载我的模板?
我的问题是:
答案 0 :(得分:1)
我是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/