专题:怎样自定义覆盖Joomla的模板输出

joomla_documentation_168在之前的一些Joomla文档中,我们集中学习了Joomla模板输出覆盖方面的知识;这套由Andrew Eddie(Joomla项目高级开发人员)撰写的文档从Joomla模板输出覆盖的概念讲起,相继介绍了MVC、布局、组件模块的文件结构及覆盖方法等知识要点,对希望学习Joomla模板输出自定义的朋友们来说是个不错的上手指南和参考;现在把这些文档集中在这篇专题中,以方便浏览阅读;欢迎各位交流指教。

Joomla文档中文翻译 - 模板输出覆盖 - 小结归纳

joomla_documentation_168在之前的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

并对该文件进行自定义编辑;关于自定义组件输出的详情可以参见:

怎样自定义模块的输出

我们以最新文章(Latest News)模块为例;将下面这个文件:

阅读全文: "Joomla文档中文翻译 - 模板输出覆盖 - 小结归纳"

Joomla文档中文翻译 - 模板输出覆盖 - 页码导航(Pagination)

joomla_documentation_168昨天的文档中,我们学习了怎样对模块结构(Module Chrome)进行自定义;今天,我们来看看关于关于页码导航(Pagination)的输出覆盖。

正如“Joomla文档中文翻译 - 模板输出覆盖 - 自定义模板”一文中提到过的,与模块结构类似,页码导航也是模板自定义覆盖中比较重要的一个概念;通常,我们可以在模板的html文件夹中找到定义页码导航输出的文件;通过对这个文件的自定义修改,我们就可以控制页码导航的输出方式了下面的截图展示了一个典型的页码导航样式:

joomla-article-list-pagination

这是rhuk_milkyway模板默认的页码导航,我们可以基于这个输出模式来做覆盖;定义该页码导航的文件可以在下面的路径中找到:

阅读全文: "Joomla文档中文翻译 - 模板输出覆盖 - 页码导航(Pagination)"

Joomla文档中文翻译 - 模板输出覆盖 - 模块结构(module chrome)

joomla_documentation_168前面一篇文档中,我们学习了怎样对Joomla原生模块的布局进行输出覆盖;今天我们来看看模块结构(module chrome)的自定义方法。其实呢,在09年11月的几篇介绍Joomla模块的文档教程中,我们就已经比较详细的了解了有关模块结构以及相关自定义的知识;现在作为“模板输出覆盖”内容体系的一部分,我们不妨再复习一遍相关知识,并且学习一个新的代码范例。

首先,可以回顾一下从前的相关文档;这些文档很详细的介绍了模块结构的概念、原生模块结构类型以及自定义方法。

我们可以通过创建或修改模板的modules.php文件来自定义模块结构及风格。与组件模块的状况相同,该文件位于模板路径的html文件夹中。我们可以参照rhuk_milkyway模板提供的modules.php文件,来看看它定义的一些模块结构。在下面的路径中找到该文件:

Joomla根路径/templates/rhuk_milkyway/html/modules.php

如果你在使用rhuk_milkyway模板那么可以直接向这个文件中添加代码来创建自定义模块结构。例如,我们希望创建一种以定义列表(<dl><dt><dd>)的形式来输出内容的模块结构。我们可以向modules.php文件中添加如下代码:

阅读全文: "Joomla文档中文翻译 - 模板输出覆盖 - 模块结构(module chrome)"

Joomla文档中文翻译 - 模板输出覆盖 - 模块布局的输出覆盖

joomla_documentation_168在前面的几篇文档中,我们学习了怎样对Joomla原生组件的布局输出进行覆盖;今天的文档将介绍怎样对Joomla原生模块的布局输出进行覆盖;由于方法与组件覆盖很相似,所以强烈D推荐阅读本文结尾列出的几篇关于组件输出覆盖的文档,以作参考。

模块布局的输出覆盖

和组件类似,Joomla的模块也有特定的文件目录结构:

/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)

在模块的根路径下(例如上面结构示意中的mod_latest_news,最新文章模块),有一个/tmpl/文件夹,这个文件夹中包含该模块的一个布局文件通常,模块只有一个布局文件,但某些特殊的模块中会有例外。

和组件相同,用来覆盖Joomla模块输出的布局文件必须被放在特定的路径中我们使用Beez模板做示例,来看看它的文件结构:

阅读全文: "Joomla文档中文翻译 - 模板输出覆盖 - 模块布局的输出覆盖"

Joomla文档中文翻译 - 模板输出覆盖 - 怎样覆盖嵌套的布局

joomla_documentation_168前面一篇文档中,我们学习了怎样通过复制和创建自定义布局文件来实现模板覆盖;今天我们继续这个话题,来看看怎样对包含嵌套关系的布局输出进行覆盖。

Joomla组件的一些view中,我们时常看到有些文件会以相同的单词开头。文章组件(com_content)的view之一,category,就是一个典型的例子。category有两个布局方式,其中blog方式实际上由三部分组成:布局文件blog.php和两个子布局文件——blog_item.php以及blog_links.php。打开blog.php文件,在代码中我们可以找到由loadTemplate方法调用的两个子布局文件

echo $this->loadTemplate('item');
// or
echo $this->loadTemplate('links');

需要注意的是,当blog.php加载这些子布局文件时,当前的布局方式是已知的,我们不需要在loadTemplate的参数中添加文件前缀,例如前面的代码中只需要“item”,而不是“blog_item”。

忽略blog.php这样的布局文件而只对其子布局文件进行覆盖是可行的。例如,如果我们觉得Joomla原生的blog布局方式没有问题,而只想修改blog列表中每个文章项目的输出方式,那么我们可以找到下面这个文件:

阅读全文: "Joomla文档中文翻译 - 模板输出覆盖 - 怎样覆盖嵌套的布局"
Page 1 of 3

最新Joomla案例介绍

  • Joomla案例介绍 - WanderTrip
    Joomla案例介绍 - WanderTrip Saturday, 18 June 2011 11:49
  • Joomla案例介绍 - KiTARM.com
    Joomla案例介绍 - KiTARM.com Saturday, 18 June 2011 11:45
  • Joomla案例介绍 - JoeLizzerd.com
    Joomla案例介绍 - JoeLizzerd.com Saturday, 18 June 2011 11:39