Magento学习第一课——目录结构介绍

Magento学习第一课——目录结构介绍

一.Magento为何强大

Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性。选择Zend的原因有很多,但是最基本的是因为zend框架提供了面向对象的代码库并且有很好的团队支持。通过这个框架,Magento主要围绕三个基本点建立:

1. 灵活性:我们相信每一个解决方案都像它的商务支持一样是独一无二的。Magento的代码可以无缝定制的。

2. 可升级性:Magento可方便的实行定制且不丧失升级的能力,因为从社区中获得核心代码和本地的自定义功能是分离的。

3. 速度和安全:开发人员所使用的代码标准遵循了最佳做法,确保了程序运行的效率,并且提供了安全的在线网店程序。

Magento的配置系统就像是Magento的心脏,支撑着Magento的运行。这套配置系统掌管着几乎所有“module(模块)/model(模型)/class(类)/template(模板文件)/etc(配置文件)”。它把整个Magento系统抽象出来,用一个配置文件来描述。这里的“配置文件”并不是一个物理上存在的文件,而是Magento根据当前的系统状态动态生成的一段XML。大多数的PHP开发者并不习惯于这样抽象层,因为它增加的编程的复杂性。但是这样的抽象提供了无与伦比的灵活性,允许你覆盖几乎任何系统的默认行为。

二.Magento的目录结构

各个目录详细说明:

/app – 程序根目录

/app/etc – 全局配置文件目录

/app/code – 所有模块安装其模型和控制器的目录

/app/code/core – 核心代码或经过认证得模块,如果要升级不要这里的代码

/app/code/community – 社区版的模块目录

/app/code/local – 定制代码目录

/app/code/core/Mage? – magento默认命名空间

/app/code/core/Mage?/{Module} – 模块根目录

/app/code/core/Mage?/{Module}/etc – 模块的配置文件目录

/app/code/core/Mage?/{Module}/controllers – 模块的控制器

/app/code/core/Mage?/{Module}/Block? – 显示块的逻辑类

/app/code/core/Mage?/{Module}/Model? – 模块的对象模型

/app/code/core/Mage?/{Module}/Model/Mysql4? – 模块的资源模型

/app/code/core/Mage?/{Module}/sql – 模块各个版本的安装和升级用sql

/app/code/core/Mage?/{Module}/sql/{resource}/- 升级是需要的资源模型

/app/code/core/Mage?/{Module}/sql/{resource}/{type}-{action}-{versions}.(sql|php) – 资源升级文件 例如: mysql4-upgrade-0.6.23-0.6.25.sql

/app/design – 设计包目录 (layouts, templates, translations)

/app/design/frontend – 前端的设计

/app/design/adminhtml – 后台管理设计

/app/design/{area}/{package}/{theme} – 定制的主题

/app/design/{area}/{package}/{theme}/layout – 定义显示块的 .xml 文件

/app/design/{area}/{package}/{theme}/template – .phtml (html with php tags)模版

/app/design/{area}/{package}/{theme}/locale – Zend_Translate 兼容的主题用的文字翻译

/app/locale – 本地化文件

/app/locale/{locale (en_US)} – Zend_Translate 兼容的模块用的文字翻译

/skin/{area}/{package}/{theme}/- css和图像

/lib – 公用库

/js – javascripts

/media – 上传文件存放目录

/tests – 测试目录

/var – 临时文件目录

三.Config.xml配置文件标签的介绍

magento每个模块都存在etc文件夹,这是必须的文件夹,里面至少存在一个config.xml的配置文件,这个文件的配置是否正确,直接给予模块是否能正确运行,起关键性作用。Magento总是通过配置文件来获得类名,这个逻辑看起来有些复杂,但这样做的优点也很明显,我们可以不需要更改Magento的代码就能更 改Magento的核心功能。config.xml配置文件总以<config>做为根标签。里面包含着各个功能的标签组。

文件大致结构:

<config>
    <modules> 声明该模块所在的代码区里面的文件夹的名称;
    <admin> 定义后台相关路由(一般只涉及路由);
    <adminhtml> 定义后台layout,events,translate等;
    <frontend> 定义前台相关路由,layout,events,translate等;
    <global> 定义该模块下全局(包括前台和后台)的block,helper,model等相关类的指定;
</config>

详细解释:
===============================================

<modules>
    <代码包文件夹名称_模块名>
        <version>0.2.0</version>
   </代码包文件夹名称_模块名>

</modules>

modules标签比较简单,只是声明该模块所在的代码区里面的文件夹的名称,比如Mage文件夹,如果模块在的代码区在local,则是根据自己定义的文件夹来声明,version标签,则是该模块的版本号。该版本号直接影响到sql文件夹下的安装文件。

================================================
<admin>
    <routers>
       <前端名称>
           <use>admin</use>
           <args>
                <module>代码包名称_模块名</module>
                <frontName>前端名称</frontName>
           </args>
        </前端名称>
    </routers>
</admin>

admin标签组,定义后台相关路由(一般只涉及路由),frontName标签定义访问时所涉及的模块名,这涉及到路由部分,这里就不说了。use标签,定义的是使用权限,一般后台都定义为admin,这里的模块名与frontName定义的同名

================================================
<adminhtml>

<layout>

定义layout

</layout>
<translate>

定义翻译module

</translate>
<events>

定义事件observer

</events>

</adminhtml>

adminhtml标签组,定义后台layout,events,translate等;

================================================
<frontend>

<routers>

<前端名称>

<use>standard</use>

<args>

<module>代码包名称_模块名</module>

<frontName>前端名称</frontName>

</args>

</前端名称>

</routers>
<layout>

<updates>

<前端名称>

<file>布局文件</file>

</前端名称>

</updates>

</layout>

</frontend>

frontend标签组,定义前台相关路由(一般只涉及路由),frontName标签定义访问时所涉及的模块名,这涉及到路由部分,这里就不说了。
use标签,定义的是使用权限,一般后台都定义为standard,这里的模块名与frontend定义的同名。
layout标签指定该模块使用哪个布局文件。

================================================
<global>
global标签,该标签定义该模块下的block,helper,model等相关类的指定,比如:

<helpers>
<前端名称>

<class>该模块下类文件包</class>

</前端名称>
</helpers>

新建模块,如有helper类,都需要在这里指定,有block类也也需要相应的指定才会起作用。model类也是如此,只是model标签,如有数据表,会要求指定resourceModel标签,如是重写的模块,类都应该是加<rewrite>下的,而不能直接指定<class>例如:

<models>
<前端名称>

<class>model类文件夹</class>
<resourceModel>资源名称</resourceModel>

</前端名称>
<资源名称>

<class>资源类文件夹</class>
<entities>

<实体类名><table>表名</table></实体类名>

</entities>

</资源名称>
</models>

资源名称一般会设定为前端名称_mysql4文件夹,资源类文件夹也指定到此文件夹,实体类名为表对应的类,并不是所有的表都会有实体类。

resources标签,该标签只有模块需要安装文件时才指定。例如:

<resources>
<前端名称_setup>

<setup>

<module>代码包名称_模块名</module>

<class>资源安装类</class>

</setup>
<connection>

<use>core_setup</use>

</connection>

</前端名称_setup>

<前端名称_read>

<connection>

<use>core_read</use>

</connection>

</前端名称_read>

<前端名称_write>

<connection>

<use>core_write</use>

</connection>

</前端名称_write>
</resources>

资源安装类一般为mysql4资源下的Setup类,集成于Mage_Core_Model_Resource_Setup.

时间: 2024-11-08 12:46:01

Magento学习第一课——目录结构介绍的相关文章

vue学习笔记——目录结构介绍(二)

1.初始目录结构如下: 2.目录结构介绍 目录/文件 说明 build 最终发布的代码存放位置. config 配置目录,包括端口号等.我们初学可以使用默认的. node_modules npm 加载的项目依赖模块 src 这里是我们要开发的目录,基本上要做的事情都在这个目录里.里面包含了几个目录及文件: assets: 放置一些图片,如logo等. commponents: 目录里面放了一个组件文件,可以不用. App.vue: 项目入口文件,我们也可以直接将组建写这里,而不使用 commpo

微擎目录结构介绍

pro ├─ addons ---------------- [模块安装目录] (意为附加组件) │ ├─ business -------------- 模块的名称 (示例) │ │ ├─ images 建议 css 文件也放此目录. │ │ ├─ template 模板目录 │ │ │ ├─ mobile APP 端模板目录 │ │ │ │ └─ ... *.html APP 端模板文件 │ │ │ └─ ... *.html Web 端模板文件 │ │ ├─ inc 引用的 php 文件目

微信SDK开发学习第一课

1.为什么学习微信API开发? 微信注册用户6亿,把微信当做推广平台已经成为主流. 2.微信SDK主要功能有哪些? 主要功能:分享给朋友,分享到朋友圈 3.如何使用微信SDK? 3.1 打开微信SDK主页注册账号:https://open.weixin.qq.com/ 3.2 点击管理中心-->移动应用-->创建移动应用:填写基本信息 移动应用名称:微信SDK学习第一课 英文名称(选填):WebChat SDK interface to learn one. 移动应用简介:学习微信开发第一课

thinkphp学习笔记1—目录结构和命名规则

最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快点,别无他意,所谓活到老,学到老,希望各位不要见笑啊. 我的做法很简单,先从手册开始,手册是开发thinkphp作者辛勤劳动的成果,但是有些地方是在是不懂,如果有幸各位也遇到类似的问题希望能回复.thinkphp手册地址:http://doc.thinkphp.cn/manual.html 1.框架目录 在章节1.6 目录结构,内容如下: 新版的目录结

Linux源代码目录结构介绍

1.arch目录:存放不同平台的相关代码,每种平台用不同的目录来区分. ******Alpha平台 ******Arm平台 ******Arv32平台 ******X86平台 2.drivers目录:存放驱动程序的目录,不同的驱动用不同的目录来加以区分. ******ftape:磁带驱动 ******hfmodem:无线电设备驱动 ******joystick:游戏杆驱动 ******paride:从并口访问IDE设备的支持 ******cdrom:光驱驱动 ******char:字符设备驱动

IOS学习第一课

第一课,也就是公认的HelloWorld了. 步骤如下: 1  创建helloWorld工程 2 实现QuizViewController.h文件 3 实现QuizViewController.m文件 4 使用StorBoard绘制界面 5 连接输出口 6 定义事件 IOS学习第一课

jquery 学习第一课之start

1.$选取符 ( $ == jQuery ) (1) $("div").addClass("special");选取本页面中的所有<div>元素,然后将这些div加上都加上一个名为“special”的CSS样式. (2)$("div")选取所有的div元素. (3)$(“#body”)选取id为body的元素. (4)$("div #body")选取id为body的<div>. (5)$("d

FPGA入门学习第一课:二分频器

分频器还是比较简单的,一般的思路是:每数几个时钟就输出一个时钟.最简单的当数二分频器了,每当时钟上升沿(或下降沿)就把输出翻转一下.这样就刚好实现了二分频器了. 网上也搜到了最简实现”二分频最简单了,一句话就可以了:               always @ (negedge clk)        clk_2<=~clk_2;“ 但仿真时却发现无法输出 分析是因为输出信号的初始状态不确定造成的,于是加了一句初始化,就可以正常分频了 但观察他们生成的逻辑结构图是一样的 完整代码如下: mod

create-react-app脚手架的安装和目录结构介绍

1.对脚手架的初步了解 编程领域中的"脚手架"指的是能够快速搭建项目"骨架"的一类工具,例如大多数的React项目都有src,public,webpack配置文件等等,而src目录中又包含components目录等等.每次在新建项目时,手动创建这些固定的文件目录.脚手架的作用就是帮助你完成这些重复性的工作,包括一键生成主要的目录结构.安装依赖等等. 2.脚手架的安装 ①两步操作即可完成 npm  install -g create-react-app yarn  (