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 中的<frontent><routers>
喂,对不起,我忘记了这篇文章的变化,这是一个helloworld
在config.xml
你有<modules>
在<global>
- 它应该是根级别。
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 模块的主要内容,如果未能解决你的问题,请参考以下文章