主题与模板的比较
我们将尝试一般情况下描述OOOPS如何使用主题文件和模板文件来呈现网站。
为什么我们会感到困惑?
在我看来,人们对这两者之间差距的困惑主要源自人们对它们期望的工作方式与实际工作方式的差异。
1. 人們期望它應該如何運作
2. 它實際上是如何運作的
第2點是既定的,可能近期不会改变(那些跟进Xoops 2.x开发的人知道模板和主题的方法已经改变了好几次,现在已经相对稳定)。
然而第1點有很大的变化!这主要是因为我们来自不同的背景;一些来自phpNuke、PostNuke等。一些人来自Typo3等系统或其他'全套装件'。然后,有些人来自纯粹的php开发,在那里一切从头开始手工完成。
Xoops 2.x中使用的术语也是第二个问题。模板应该被称为"模块/区块模板",这样就不会与主题模板混淆,主题模板是完全不同的(正如以下所示)。
整体情况
当你第一次尝试对模板和主题进行操作时,你会发现一个明显的事情
每个模板集合都由许多文件组成! (我在检查时,一个基本系统大约有36个模板,没有任何模块已安装)
主题的文件数量相对较少(默认主题少于10个文件!)
有些人可能已经在此时说“啊!”。
对于还没说的人,我将给出一个简单的例子。
一个显示最后注册的10个人的主题区块将始终显示3件事:区块顶部的标题,注册的人的昵称和注册日期。现在不要忘记我们想要将“设计”与“内容”分开,对吧?
为此,我们将为这个单个区块创建两个文件
1. 一个模板,它定义了这个区块的结构,基本上是一个昵称 + 日期的表格,一行一行,直到生成10行。
2. 一个文件,它将上一个步骤中生成的信息放入某个“设计”中。这可能意味着将区块的标题放在顶部,并在下面放置生成的列表。
在这个例子中,数字1是区块模板,数字2是主题。区块模板是被插入到主题的区块代码中的。
现在结论应该相当明确了。
模板(区块/模块模板)控制数据的显示方式,而主题模板则控制数据的可视外观(很可能是通过分配各种元素的类名,然后在CSS中进行定义)。
还有更多细节。
使用与Xoops 2.x相同的术语
“模板”是一段html代码,它使用预定义的变量(由特定模块提供)来向网站公开数据。
“主题”是一种特殊的模板(或一系列模板),通过选择第一模板(数据模板)的结果,并将其放置在主题指定位置来控制Xoops站点的样式和图形。这意味着,再次强调,我们有两种模板:数据模板和主题模板。
数据模板永远不会直接使用,但总是通过主题模板来显示。
这意味着,除非你打算修改模块如何在区块中显示它们的数据,否则你只会想玩转主题模板,而不是数据模板。我个人觉得Xoops 2.x可以采用稍微友好一些的名字,以消除对潜在的主题开发者的困扰。
来自xoops.org论坛的额外解释
来自Ackbarr:模板控制模块内容的布局,而主题控制站点的整体外观。
来自Herko:比Ackbarr更准确地说,主题是手动上传到xoops根目录中的主题文件夹中的。要更改你整个站点的样式和外观,下载标准主题,离线编辑以适应你的口味。然后上传主题文件到主题文件夹(文件夹命名如:themes/humbrietheme/theme.html等)。
可以通过系统管理菜单中的模板管理器来编辑模板。克隆默认模板集,然后编辑复制的集以适应你站点的风格和感觉。模板可以按模块编辑。
如果你试图编辑主题文件夹中的theme.html,但没有什么改变,确保你已经在一般设置中将“从主题/你的主题/模板目录更新模块模板.html文件”设置为“是”!!