Magento skin and javascript 文件位置介绍

Skin
Skin/的目录结构和app/design/的目录结构类似,Skin文件夹包含了模板文件.phtml所用到的Javascript,CSS以及图片, 不同的主题, 都一套各自对应的js,css和图片。

三个主要的文件夹:

CSS 这个文件夹主要用来保存你主题样式表的文件,
Images这个文件夹主要用来保存在你主题里使用到的媒体文件(主要是图片),
js 这个文件夹就是为了存储你主题模板里用到的javascript文件了

这里需要额外说明的一点是, Magento在skin里面同样使用了”回退”机制, 在Magento里面很多地方都运用这个机制, 在以后的文章中涉及到我们在详细谈论.

首先, Magento会在skin/frontend/your_pakage/your_theme/目录里查找指定的文件,
如果这个文件没有找到, 那么, Magento会继续在skin/frontend/your_package/default/目录里查找
如果仍然没有查找到这个文件, Magento会跑到skin/frontend/base/default/这个默认目录里做最后的尝试.
最后, 如果这个文件在base默认目录也不存在, 那Magento会抛出一个错误提示.

JS
除了Theme主题包里面包含了一个js文件夹外, 位于根目录下的js文件夹包含了magento前后台使用到的各种js文件, 库以及框架, 如果你需要为你自定义的module添加新的Javascript/AJAX库, 那么你应该按照对应的规则把它们放到这个文件夹下.

Magento 模版和布局文件的介绍

app/design/是存放设计的地方
存在三个文件夹: adminhtml, frontend, install. adminhtml是后台的设计,frontend是前台的设计,install是magento安装时的设计。
每个文件夹下都可以有多个packages,每个packages下可以有多个主题
一个主题应该由下面几个部分组成:
Layout
在这个文件夹里包含了主题的Loyout的XML 配置文件, 这些Loyout的配置文件有点类似于”胶水”在作用, 起到了连接Modules(位于app/code目录的)和模板文件的作用.更多相关的信息, 请参看这里.

因为Magento的模块化的设计, 所有默认模板的Layout文件都存储在以单独的Modules名命名的XML文件中, 此外, 自定义主题一个应该有一个单独的名为local.xml的loyout文件, 其他任何需要覆盖更新的布局都应该放在这里.

Template
Template文件夹包括了所有主题的.phtml文件, phtml文件的内容由HTML和PHP代码组成, 它提供了整个前台页面显示所用的模板.

Locale
Locale文件夹包含了一系列提供各国语言翻译的CSV文件, 每个语言包应该按照语言代码+国家代码的格式(大写)的格式, 如(en_US 或者 en_UK)/translate.csv. 更多Magento国际化的详细信息, 我们将在以后的文章中阐述.

Magento 典型的module模块结构介绍

一个典型的Magento 模块应该有如下的目录结构层次, 同时, 它还应符合MVC架构标准:

app/code/local/Alanstormdotcom/Configviewer/Block
app/code/local/Alanstormdotcom/Configviewer/controllers
app/code/local/Alanstormdotcom/Configviewer/etc
app/code/local/Alanstormdotcom/Configviewer/Helper
app/code/local/Alanstormdotcom/Configviewer/Model
app/code/local/Alanstormdotcom/Configviewer/sql

让我们一起对每个目录进行一一介绍吧!

Block
这个目录的责任就是为了显示页面, 如果我们用经典的MVC架构来看的话, Block起到了联合model 和template文件的作用, 它能从数据库里面取出数据并把它传递到Theme里面的模板文件.其实, Block是介于controller 和view之间的附加的一个层

Controllers
Controllers包含了所有的业务逻辑的actions, 它为Magento的分发请求(dispatch(), preDispatch(), postDispatch())提供了对应的相应, 同时它还为系统的其他部分提供了其相关的指令.

etc
它包含了模块所有的xml配置文件, 一个模块可能包含多个xml配置文件, 但必须至少含有一个config.xml文件, 这个文件用来配置模块的所有models, routers, blocks, helpers等相关的信息.
下面是一个最简单的config.xml
    
<config>
    <modules>
        <Namespace_Modulename>
            <version>0.1.0</version>
        </Namespace_Modulename>
    </modules>
</config>

通常情况下, 这个文件夹下还包含了一个adminhtml.xml 和system.xml文件, adminhtml.xml主要是用来配置模块在后台的菜单的访问权限, 如果模块需要在magento后台的system->Configuration里面设置相应的配置选项的话, 那么我们就需要在system.xml里面做相关的设置了.
如果你想了解更多的信息, 你可以访问这里.

Helper
在Helpers里面,我们可以根据不同的需要来定义一些常用的方法, 通常情况下, 这些helper类中定义的方法可以在template模板文件,Block,Model,Controller等整个系统中使用, 调用的方式通常如下:
    
Mage::helper('modulename/helpername')->methodName();

每一个模块都应该有一个默认的helper类Modulename/Helper/Data.php, 当然, 我们可以通过如下的方式调用它:
    
Mage::helper('modulename')->methodName();

Model
在经典的MVC架构里, Models是用来连接数据库和存取数据操作的. 但Magento 有不同的解释, 如果你是第一次接触, 可能感觉理解起来有点困难:
“几乎所有的Magento的Models都可以归于两种类型, 一种是基本的ActiveRecord类型(一张表对应一个对象), 另外一种是Entity Attribute Value模式, 也就是我们通常说的EAV模式, 同时, 每个Model还有一个Model collection, 它主要是用来存放一些私有的Magento model的实例. 同时,Magento团队已经实现了PHP Standard Library里面的IteratorAggregate and Countable的接口, 这样就允许每个Model类型有它自己的collection类型, 如果你不熟悉PHP Standard Library, 那你也可以把Model Collection当成附带有方法的数组.
Magento的model里面没有直接包括任何连接数据库的代码, 但是, 每个模块分别使用两个modelResource 类来和数据库打交道, 其中一个是用来读操作, 另一个是写操作,”
更多详情,请参考这里

sql
这个文件夹里面的文件主要是负责处理用于模块里面需要用到的自定义数据库表, 以及该模块相关的升级.

etc/modules/Namespace_Modulename.xml
每一个模块都包含了一个总的配置文件, 这个文件放在etc/modules/目录下, Magento运行时将加载该目录下所有的配置文件, 同时, magento将根据这些文件来判断那些模块是开启的,它们被放置在哪儿.
下面是其一个典型的配置实例
    
<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Modulename>
            <active>true</active>
            <codePool>local</codePool>
        </Namespace_Modulename>
    </modules>
</config>

同时,你也可以定义其他的附加参数, 例如depends, version和platform, 当然这些参数也可以在模块的config.xml里面定义.

Depends
    
<depends>
    <Mage_Catalog />
</depends>

Version
    
<version>0.1.0</version>

Platform
    
<platform>сe</platform> <!– (ce=community edition,pe=professional etc.) –>