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.
Magento学习第一课——目录结构介绍的更多相关文章
- vue学习笔记(三)——目录结构介绍
1.初始目录结构如下: 2.目录结构介绍 目录/文件 说明 build 最终发布的代码存放位置. config 配置目录,包括端口号等.我们初学可以使用默认的. node_modules npm 加载 ...
- [转]ZooKeeper学习第一期---Zookeeper简单介绍
ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...
- Elasticsearch7.X 入门学习第一课笔记----基本概念
原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- thinkphp学习笔记1—目录结构和命名规则
原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...
- Vue 入门之目录结构介绍
Vue 是一套用于构建用户界面的渐进式框架,与其它大型的页面框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当 ...
- magento开发手册之目录结构
magento是一个很优秀的电商系统,很多朋友会用它部署自己的电商网站,少不了二次开发.下面我们随着ytkah来一起认识一下magento开发手册之目录结构吧. /app – 程序根目录 /app/e ...
- create-react-app脚手架的安装和目录结构介绍
1.对脚手架的初步了解 编程领域中的“脚手架”指的是能够快速搭建项目“骨架”的一类工具,例如大多数的React项目都有src,public,webpack配置文件等等,而src目录中又包含compon ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- vue 目录结构介绍
1 初始目录如下: 2 目录结构介绍 bulid:最终帆布的代码存放位置 config:配置目录,包括端口号等 node_modules:npm加载的项目依赖模块 src:z这里是我们要开发的目录,基 ...
随机推荐
- Linux From Scratch - Version 7.7-systemd (中文)
Linux From Scratch - Version 7.7-systemd: https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html
- Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE
原文地址:https://support.microsoft.com/en-us/kb/963017 Source: Microsoft Support RAPID PUBLISHING RAPID ...
- xcode 常见错误报错问题!
1:module file '/Users/shaka/Library/Developer/Xcode/DerivedData/ModuleCache/92IKIZLYISUT/Darwin-2OA ...
- MIME列表
.asx,video/x-ms-asf.xml,text/xml.tsv,text/tab-separated-values.ra,audio/x-pn-realaudio.sv4crc,applic ...
- if else 的妙用 —— 顾客视角
if (storedCash % 100 != 0) { System.out.println("请输入100的倍数!!!"); } else if(storedCash % 10 ...
- 转债---Pregel: A System for Large-Scale Graph Processing(译)
转载:http://duanple.blog.163.com/blog/static/70971767201281610126277/ 作者:Grzegorz Malewicz, Matthew ...
- TTrayIcon用法
TTrayIcon用法 self.trycn1.Icon:=Application.Icon; Self.trycn1.Hint:=self.Caption; self.trycn1.Visible: ...
- C# 默认以管理员权限运行程序
/** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前登录的Windows用户标示 //URL:http://w ...
- java基础-泛型2
浏览以下内容前,请点击并阅读 声明 6 类型推测 java编译器能够检查所有的方法调用和对应的声明来决定类型的实参,即类型推测,类型的推测算法推测满足所有参数的最具体类型,如下例所示: //泛型方法的 ...
- 所有的畅通工程[HDU1232][HDU1874][HDU1875][HDU1879]
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...