/modules
/mod_latest_news
/tmpl
default.php (the layout)
helper.php (a helper file containing data logic)
mod_latest_news.php (the main module file)
mod_latest_news.xml (the installation XML file)
专题:怎样自定义覆盖Joomla的模板输出
在之前的一些Joomla文档中,我们集中学习了Joomla模板输出覆盖方面的知识;这套由Andrew Eddie(Joomla项目高级开发人员)撰写的文档从Joomla模板输出覆盖的概念讲起,相继介绍了MVC、布局、组件与模块的文件结构及覆盖方法等知识要点,对希望学习Joomla模板输出自定义的朋友们来说是个不错的上手指南和参考;现在把这些文档集中在这篇专题中,以方便浏览阅读;欢迎各位交流指教。
在之前的11篇文档中,我们集中学习了Joomla模板输出覆盖方面的知识;这套由Andrew Eddie(Joomla项目高级开发人员)撰写的文档从Joomla模板输出覆盖的概念讲起,相继介绍了MVC、布局、组件与模块的文件结构及覆盖方法等知识要点;今天的小结使用rhuk_milkyway模板作为范例,将几个重要的知识点提炼出来,并附上相关文档的链接,供大家在学习和建站的过程中参考。
怎样自定义组件的输出
我们以文章组件(com_content)中的article模式为例;将下面这个文件:
Joomla根路径/components/com_content/views/article/tmpl/default.php
复制粘贴至:
Joomla根路径/templates/rhuk_milkyway/html/com_content/article/default.php
并对该文件进行自定义编辑;关于自定义组件输出的详情可以参见:
- Joomla文档中文翻译 - 模板输出覆盖 - 组件输出类型
- Joomla文档中文翻译 - 模板输出覆盖 - 布局(Layout)
- Joomla文档中文翻译 - 模板输出覆盖 - 复制与创建布局文件
- Joomla文档中文翻译 - 模板输出覆盖 - 怎样覆盖嵌套的布局
怎样自定义模块的输出
我们以最新文章(Latest News)模块为例;将下面这个文件:
在昨天的文档中,我们学习了怎样对模块结构(Module Chrome)进行自定义;今天,我们来看看关于关于页码导航(Pagination)的输出覆盖。
正如“Joomla文档中文翻译 - 模板输出覆盖 - 自定义模板”一文中提到过的,与模块结构类似,页码导航也是模板自定义覆盖中比较重要的一个概念;通常,我们可以在模板的html文件夹中找到定义页码导航输出的文件;通过对这个文件的自定义修改,我们就可以控制页码导航的输出方式了。下面的截图展示了一个典型的页码导航样式:
这是rhuk_milkyway模板默认的页码导航,我们可以基于这个输出模式来做覆盖;定义该页码导航的文件可以在下面的路径中找到:
在前面一篇文档中,我们学习了怎样对Joomla原生模块的布局进行输出覆盖;今天我们来看看模块结构(module chrome)的自定义方法。其实呢,在09年11月的几篇介绍Joomla模块的文档教程中,我们就已经比较详细的了解了有关模块结构以及相关自定义的知识;现在作为“模板输出覆盖”内容体系的一部分,我们不妨再复习一遍相关知识,并且学习一个新的代码范例。
首先,可以回顾一下从前的相关文档;这些文档很详细的介绍了模块结构的概念、原生模块结构类型以及自定义方法。
- Joomla文档中文翻译 - 什么是模块结构(module chrome)?
- Joomla文档中文翻译 - 原生模块结构(module chrome)类型及对应的HTML输出
- Joomla文档中文翻译 - 怎样在模板中自定义模块结构(module chrome)
我们可以通过创建或修改模板的modules.php文件来自定义模块结构及风格。与组件和模块的状况相同,该文件位于模板路径的html文件夹中。我们可以参照rhuk_milkyway模板提供的modules.php文件,来看看它定义的一些模块结构。在下面的路径中找到该文件:
Joomla根路径/templates/rhuk_milkyway/html/modules.php
如果你在使用rhuk_milkyway模板,那么可以直接向这个文件中添加代码来创建自定义模块结构。例如,我们希望创建一种以定义列表(<dl><dt><dd>)的形式来输出内容的模块结构。我们可以向modules.php文件中添加如下代码:
在前面的几篇文档中,我们学习了怎样对Joomla原生组件的布局输出进行覆盖;今天的文档将介绍怎样对Joomla原生模块的布局输出进行覆盖;由于方法与组件覆盖很相似,所以强烈D推荐阅读本文结尾列出的几篇关于组件输出覆盖的文档,以作参考。
模块布局的输出覆盖
和组件类似,Joomla的模块也有特定的文件目录结构:
在模块的根路径下(例如上面结构示意中的mod_latest_news,最新文章模块),有一个/tmpl/文件夹,这个文件夹中包含该模块的一个布局文件;通常,模块只有一个布局文件,但某些特殊的模块中会有例外。
和组件相同,用来覆盖Joomla模块输出的布局文件必须被放在特定的路径中;我们使用Beez模板做示例,来看看它的文件结构:
在前面一篇文档中,我们学习了怎样通过复制和创建自定义布局文件来实现模板覆盖;今天我们继续这个话题,来看看怎样对包含嵌套关系的布局输出进行覆盖。
在Joomla组件的一些view中,我们时常看到有些文件会以相同的单词开头。文章组件(com_content)的view之一,category,就是一个典型的例子。category有两个布局方式,其中blog方式实际上由三部分组成:布局文件blog.php和两个子布局文件——blog_item.php以及blog_links.php。打开blog.php文件,在代码中我们可以找到由loadTemplate方法调用的两个子布局文件:
需要注意的是,当blog.php加载这些子布局文件时,当前的布局方式是已知的,我们不需要在loadTemplate的参数中添加文件前缀,例如前面的代码中只需要“item”,而不是“blog_item”。
忽略blog.php这样的布局文件而只对其子布局文件进行覆盖是可行的。例如,如果我们觉得Joomla原生的blog布局方式没有问题,而只想修改blog列表中每个文章项目的输出方式,那么我们可以找到下面这个文件:
