1.网站和网店(Website and Store)
Magento 中的一个网站(Website)是一些共享相同的客户、订单信息和购物车信息的商店(Store)的集合。Store是一些Store View的集合。这些都是比较笼统的概念,我们在确立个别特别需要的网店时用这些概念可以很好的建立。下面有几种确定不同website, store 和store views用途的:
方案 1
一家名为Dubloo的公司创建了一个在线销售平台,它包括三个独立的服装商店,每个迎合不同价格水平的受众。 Dubloo公司希望三个商店能够共享所有客户和订单信息。在这种情况下, Dubloo公司将有一个网站(Website),下面有三个三个商店(Store)。商店将确定个别的价格水平商店,网站将成为Dubloo公司的总平台。
方案 2
一家名为My Laptops要建立两个单独的网站,两个都是销售笔记本电脑,但是不同的价格。他们还希望每个站点提供英文和西班牙文的选择,每个客户可以在语言选择中选择自己的语言。它们还需要两个网站同步客户和订单信息。在这种情况下,Store View将在网站中将确定每个英文和西班牙文版本。两个网站分别是“My Laptops”和“Cheap Laptops”。
方案 3
一家名为Bongo's Instruments想创建一个在线的销售网点。没有其他分支店,Bongo's Instruments就是是商店以及网站。
2.界面(Interface)
Magento的界面(Interface)是一些主题(Themes)的集合,主题是确定网店的外观和前台页面结构的。一个界面可以在Magento后台为网站级别和/或Store View级别指定(了解如何为网站/商店分配一个界面)。
如果您指派一个在网站级别的界面,所有在这个网站下的商店将继承此界面。你可以进一步指定一个在Store View和商店级别的界面,可以有效的覆盖继承来的网站的界面。例如你在一个名为“John’s Pancea”的网站下经营四个不同的商店-通过学习下面每个方法的效果,您可以轻松地根据你的业务的需求来确定部署设计的方法。
-
网站级别的声明(Website-level declaration)
如果您想为四个商店都建立一个统一的外观和感觉的设计,您将指定一个网站级别的界面,在这种情况下,所有四个商店将继承网站的界面。
-
Store View级别的声明(Store view-level declaration)
如果你想每家商店都有一个单独的外观和感觉的设计,你可以为每个Store View指定一个界面,在这种情况下,四个商店都有其独特的外观和感觉。
3.主题(Themes)
Magento中的一个主题(Theme)是由布局(Layout),模板(Template)和皮肤文件(skin文件是控制网店的显示效果的)组成。Magento被设计成一次可以加载多个主题的功能,因此,通过两种类型来区分主题:
- 默认主题(Default theme)
每个界面都有一个主要的主题,称之为界面的默认主题。当你为你的网店指定一个界面的时候,系统就会自动地寻找这个默认主题,并按照这个主题来显示前台。为了自定义网店设计,您可以修改这个主题,或新建一个非默认主题,并加载它。默认的主题必须包含所有必要的布局,模板和皮肤,以确保网店顺利运行,作为主题层次系统中最低级的主题。 - 非默认主题(Non-default theme)
非默认主题可以根据你的需要来包含或多或少的主题元素文件(Layout、Template和Skin)。这种类型的主题可以作为网店的临时季节性的更改,而没有必要建立一个新的默认主题,通常可以通过创建的几张图片和更新一些的CSS来实现,例如:你可以轻松地将您的网店从平常的页面外观变成有圣诞节气氛的网店。
让我们来了解一些主题的组件:
- 布局(Layout) (在
app/design/frontend/your_interface/your_theme/layout/
)
布局是XML文件,它的作用是定义不同页面的区块(Block)结构,以及控制页面的META信息和网页的编码。布局文件是基于每个模块分布的,每一个模块拥有它自己的布局文件。要深入了解Layout,请阅读布局的介绍。 - 模板(Templates) (在
app/design/frontend/your_interface/your_theme/template/
)
模板是PHTML文件,它包含(X)HTML标签和一些用来实现信息和功能显示的逻辑的PHP代码。 - 本地(Locale) (在
app/design/frontend/your_interface/your_theme/locale/
)
这些都是在每个语言基础上组织的简单的文本文件,包含商店的翻译副本。 - 皮肤(Skins) (在
skin/frontend/your_interface/your_theme/
)
皮肤是具体区块(Blocks)中的JavaScript、CSS和图片文件。你可能会问什么是区块?很好的问题,不过不用担心,Magento已经为这个组件定义好了,看下一节。
4.区块(Blocks)
图 1. 结构区块(Structural Block) (蓝色区域)
图 2. 内容区块(Content Block) (橙色区域)
区块(Block)是Magento用来区分系统中一系列功能,并创建一个可见的、操作方式统一的模块化方式来管理这些功能的方式。有两种类型的Block,并且它们相互工作来创建输出的内容:
- 结构区块(Structural Blocks)
这些Blocks是设计成来创建网店页面的可视结构的。例如:头部(Header)、左边栏(Left Column)、主体内容(Main Column)和页眉(Footer),看图1。 - 内容区块(Content Blocks)
这些Blocks是在Structural Block中生成实际的内容的。它们是具体的每个功能的表现块,它们会部署Template Files到Structural Block中生成(X)HTML内容。例如:分类列表(Category List),小购物车(Mini Cart),产品标签(Product Tags)和产品列表(Product Listing)等等就是它们自己的内容区块,见图2。
模板中包含模板以组织全体的(X)HTML输入是作为一个典型的电子商务应用,但Magento中是通过block来收集和整理网页内容。
5.主题的层次(Hierarchy of Themes)
当您在Magento中为店铺指定多个主题时, 实际上你已经用到了这个层次(Hierarchy)的好处。创建主题是为了生成令人喜爱的图形界面,那么Magento的目标就是确保应用能够定位和正确无误地装载要求的主题,保证应用程序运行不出现错误。
例如,如果您的分类列表页面调用‘view.phtml’(在这种情况下,此模板成为一个必需的文件),但是程序在高层次的主题中无法找到该文件(注:在撰写本手册时,最高层次主题是你在后台指定的,最低层次的主题是Magento自动加载的‘default’主题。在讲来发布的版本中,Magent将为您提供能够完全控制您的主题层次的功能),它会在下一层次的主题中寻找该文件。如果这种失败,它将继续努力降低主题的层次寻找,直至它能够找到‘view.phtml’文件时,该就停止搜索并加载。这种方法的建筑设计被称为fallbacks ,因为应用程序‘fall back’下一个所需文件的可能来源,以便检索和加载它。
假如你为店铺指定了三个主题,每个主题包含的文件如下:
表格 1
default | my_theme_1 | my_theme_2 |
---|---|---|
All required files | templates/3-col-layout.phtml | templates/3-col-ayout.phtml |
templates/header.phtml | css/base.css | |
images/logo.gif | ||
css/base.css | ||
css/boxes.css |
这三个主题的层次如下:
表格 2
HIGHEST | my_theme_2 |
---|---|
my_theme_1 | |
LOWEST | default |
仔细观察,在表1有几个冗余的文件如templates/3-col-layout.phtml
和css/base.css
。现在让我们重新排表格让这些冗余文件在主题之间平信排列。
表格 3
default | my_theme_1 | my_theme_2 |
---|---|---|
All required files | ||
templates/3-col-layout.phtml | templates/3-col-layout.phtml | |
templates/header.phtml | ||
images/logo.gif | ||
css/base.css | css/base.css | |
css/boxes.css |
你可能会问:“Ok, 太好了.但是这意味着什么?”
好, 让我提醒你,表3中的那些文件是你看这些文件的方式,而不是Magento看这些文件的方式。
表4告诉你Magento 怎样看待这些文件的装载:
表格 4
default | my_theme_1 | my_theme_2 |
---|---|---|
All required files | ||
templates/3-col-layout.phtml | ||
templates/header.phtml | ||
images/logo.gif | ||
css/base.css | ||
css/boxes.css |
看到了吗?Magento是怎样忽略层次里那些冗余文件和仅仅识别层次里更高的主题的文件的。这是因为当它发现要求的文件就中止查找层次低的主题中的该文件而继续查找还没有发现的文件。