Magento 1.9 创建新的 Hello World 模块

Posted

技术标签:

【中文标题】Magento 1.9 创建新的 Hello World 模块【英文标题】:Magento 1.9 create new Hello World module 【发布时间】:2017-03-28 10:11:37 【问题描述】:

大家好!

我真的希望有人能帮助我。 我试图在 magento 1.9.3.2 中制作新模块,显示“Hello world!”来自 phtml 文件。我按照这个规则一步一步地创建了那个。创建了模块,但是当我在浏览器中打开模块(127.0.0.1/magento/helloworld)时,什么也没有出现,只是清空这个模板。 opened module in browser - screenshot

这是我指导的步骤: 1.模块声明: 在 app/etc/modules/M4U_HelloWorld.xml 中创建新的 xml 文件 <?xml version="1.0"?> <config> <modules> <M4U_HelloWorld> <active>true</active> <codePool>local</codePool> </M4U_HelloWorld> </modules> </config>

    模块配置 2.1。在 app/code/local/M4U/HelloWorld/controllers/IndexController.php 中创建控制器类

    class M4U_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action public function indexAction() $this->loadLayout(array('default')); $this->renderLayout();

2.2。在 app/code/local/M4U/HelloWorld/Block/HelloWorld.php 中创建 Block 类

class M4U_HelloWorld_Block_HelloWorld extends Mage_Core_Block_Template
                  
                       // necessary methods
                  

2.3。在 app/code/local/M4U/HelloWorld/etc/config.xml 中创建配置 xml

<?xml version="1.0"?>
<config>
<global>
    <modules>
            <m4u_helloworld>
                    <version>0.1.0</version>
            </m4u_helloworld>
    </modules>
<blocks>
        <helloworld>
            <rewrite>
     <helloworld>M4U_HelloWorld_Block_HelloWorld</helloworld>
    </rewrite>
        </helloworld>
 </blocks>
    </global>
   <frontend>
            <routers>
                    <helloworld>
                            <use>standard</use>
                            <args>
                                  <module>M4U_HelloWorld</module>
                                  <frontName>helloworld</frontName>
                            </args>
                    </helloworld>
            </routers>
    <layout>
        <updates>
            <helloworld>
                  <file>helloworld.xml</file>
            </helloworld>
        </updates>
        </layout>
    </frontend>

    定义前端模板 3.1。在 app/design/frontend/default/default/layout/helloworld.xml 中定义页面布局<?xml version="1.0"?> <layout version="0.1.0"> <helloworld_index_index> <reference name="root"> <action method="setTemplate"> <template>page/1column.phtml</template></action> </reference> <reference name="content"> <block type="helloworld/helloworld" name="hello" template="helloworld/helloworld.phtml"/> </reference> </helloworld_index_index> </layout>

    在 app/design/frontend/default/default/template/helloworld/helloworld.phtml 中创建模板文件

【问题讨论】:

而不是 127.0.0.1/magento/arturs 尝试 127.0.0.1/magento/helloworld 因为这是您定义的 URL,如config.xml 中的&lt;frontent&gt;&lt;routers&gt; 喂,对不起,我忘记了这篇文章的变化,这是一个helloworld config.xml 你有&lt;modules&gt;&lt;global&gt; - 它应该是根级别。 How to create new page in magento site的可能重复 【参考方案1】:

久经考验

screenshot here

您可以在自定义模块中显示您的 helloworld 模板,对您的代码进行一些小的修改。

    模块声明:

    <?xml version="1.0"?>
     <config>
           <modules>
              <M4U_HelloWorld>
                   <active>true</active>
                   <codePool>local</codePool>
              </M4U_HelloWorld>
           </modules>
     </config>
    

    创建文件夹结构并添加文件

A. app/code/local/M4U/HelloWorld/etc/config.xml

<config>
    <modules>
        <m4u_helloworld>
            <version>0.1.0</version>
        </m4u_helloworld>
    </modules>
    <frontend>
        <routers>
            <helloworld>
                <use>standard</use>
                <args>
                    <module>M4U_HelloWorld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>
        <layout>
            <updates>
                <helloworld module="M4U_HelloWorld">
                    <file>M4U_HelloWorld.xml</file>
                </helloworld>
            </updates>
        </layout>
    </frontend>
    <global>
        <blocks>
            <helloworld>
                <class>M4U_HelloWorld_Block</class>
            </helloworld>
        </blocks>
    </global>
</config>

B. app/code/local/M4U/HelloWorld/block/HelloWorld.php

class M4U_HelloWorld_Block_HelloWorld extends Mage_Core_Block_Template 


C. app/code/local/M4U/HelloWorld/controllers/IndexController.php

class M4U_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action 

    public function indexAction() 
        echo 'hello world';
        $this->loadLayout();  //This function read all layout files and loads them in memory
        $this->renderLayout();
    


D. app/design/frontend/ * 主题库* / * mytheme * /layout/M4U_HelloWorld.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
    <helloworld_index_index>
        <reference name="root">
            <action method="setTemplate">                  
                <template>page/1column.phtml</template>
            </action>
        </reference>
        <reference name="content">
            <block type="helloworld/helloworld" name="hello" template="helloworld/helloworld.phtml"/>
        </reference>
    </helloworld_index_index>
</layout>

E. app/design/frontend/ * 主题库* / * mytheme * /template/helloworld/helloworld.php

echo 'im a template block';

【讨论】:

【参考方案2】:

要在 Magento 1.9 中创建 HelloWorld 模块,请按照以下教程 URL。

网址:http://blog.iyngaran.info/create-custom-module-helloworld-in-magento

【讨论】:

【参考方案3】:

根据Inchoo Article:

我们将从创建一个简单的“Hello world”模块开始。然而,你 很快就会看到简单在 Magento 中具有新的含义。创建一个 裸骨模块至少需要 Magento 中的两个文件。为您 模块工作你需要/app/etc/modules/MyCompany_MyModule.xml, 应用程序/代码/本地/MyCompany/MyModule/etc/config.xml。但是,准系统模块 不会给你一个“你好开发者” - 所以,我们需要添加更多 游戏文件。

文件 1:/app/etc/modules/Inchoo_HelloDeveloper.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Inchoo_HelloDeveloper>
            <active>true</active>
            <codePool>local</codePool>
        </Inchoo_HelloDeveloper>
    </modules>
</config>

文件2:app/code/local/Inchoo/HelloDeveloper/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Inchoo_HelloDeveloper>
            <version>0.1.0</version>
        </Inchoo_HelloDeveloper>
    </modules>    
    <frontend>
        <routers>
            <Inchoo_HelloDeveloper_SomeFreeRouterName1>
                <use>standard</use>
                <args>
                    <module>Inchoo_HelloDeveloper</module>
                    <frontName>inchoo-hellodeveloper</frontName>
                </args>
            </Inchoo_HelloDeveloper_SomeFreeRouterName1>
        </routers>
    </frontend>    
</config>

文件 3: app/code/local/Inchoo/HelloDeveloper/controllers/IndexController.php

<?php

class Inchoo_HelloDeveloper_IndexController extends Mage_Core_Controller_Front_Action

    public function indexAction()
    
        echo 'Hello developer...';
    

    public function sayHelloAction()
    
        echo 'Hello one more time...';
    

?>

虽然非常简单,但文件 3 向我们展示了一件重要的事情:命名 公约。注意类的名称。你的模块类应该 以 MyCompany_MyModule_FileName 的形式保存名称,或者在阻塞的情况下 和模块:MyCompany_MyModule_Block_FileName 或 我的公司_我的模块_模块_文件名。

【讨论】:

以上是关于Magento 1.9 创建新的 Hello World 模块的主要内容,如果未能解决你的问题,请参考以下文章

Magento 1.9 - 创建新页面不起作用

Magento 1.9启用从管理面板禁用模块

在Magento 1.9中安装Magento 2的扩展

使用AJAX的Magento 1.9产品列表

Magento 1.9从phpMyAdmin更改基本图像

无法在 Magento CE 1.9 中编译 rwd 皮肤 SCSS