创建自定义布局模块

Create Custom layout module

您好,我刚刚在 magento 中创建了自定义模块,但它的前端不起作用。

配置文件:

<?xml version="1.0"?>
<config>
<modules>
    <Shareino_Sync>
        <version>0.1.0</version>
    </Shareino_Sync>
</modules>

<global>
     <helpers>
        <sync>
            <class>Shareino_Sync_Helper</class>
        </sync>
    </helpers>
    <blocks>
        <sync>
            <class>Shareino_Sync_Block</class>
        </sync>
    </blocks>
</global>
<frontend>
    <routers>
        <sync>
            <use>standard</use>
            <args>
                <module>Shareino_Sync</module>
                <frontName>shareinosync</frontName>
            </args>
        </sync>
    </routers>
    <layout>
        <updates>
            <sync>
                <file>shareino_front.xml</file>
            </sync>
        </updates>
    </layout>
</frontend>

</config>

布局文件:

# File in : app/design/frontend/default/default/layout/shareino_front.xml
<layout version="0.1.0">
    <sync_index_index>
        <reference name="content">
            <block type="sync/sync" name="sync" template="sync_index.phtml" />
        </reference>
    </sync_index_index>
</layout>

sync_index.phtml

# file in app/design/frontend/default/default/template/sync_index.phtml
<h1>
    Test Text
</h1>

我创建了一个名为 Sync.php

的块
class Shareino_Sync_Block_Sync extends Mage_Core_Block_Template
{
    public function myfunction()
    {
        return "Hello tuts+ world";
    }
}

最后我的控制器:

class Shareino_Sync_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction(){

            $this->loadLayout();


            $this->renderLayout();

    }
    public function testAction(){
        echo "index Action";
    }
}

我认为我的每一个想法都做得很好,但是当我在浏览器中加载动作 url 时,它不是我的布局。请帮助我知道我的错误。

检查您当前的主题,可能不是default/default。如果不同,只需将布局和模板放在该主题下即可。或者将其放入base/default主题中以兼容所有主题。

确保模块已在 app/etc/modules/Shareino_Sync.xml 中注册。

最后,也许您的模块已禁用输出。转到 System->Configuration->Advanced->Advanced->Disable Module Output 找到您的模块并确保它已启用。

您应该始终将模块布局文件和模板文件放在 base/default 下,原因是 Magento 的后备主题机制首先在 your_package/your_theme 中查找这些文件,然后在 your_package/default 下然后在 base/default 下。因此,如果您将这些文件放在 default/default 下并且您的包不是默认包,那么这些文件将永远找不到