在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是怎样忽略层次里那些冗余文件和仅仅识别层次里更高的主题的文件的。这是因为当它发现要求的文件就中止查找层次低的主题中 的该文件而继续查找还没有发现的文件。