在2010年的时候我们讲过让joomla模块有自定义链接的更多(more) [可后台输入],那么Joomla1.6、Joomla1.7如今也逐渐广泛应用了起来,对于中文用户来说,那些高层们似乎不会考虑我们的“更多”,那么只能按照老方法再来一次了。
依然是老办法,为方便操作,需要先在后台的模块中能够设置自定义更多的链接地址以及是否需要自定义更多的功能。
以mod_custom为例,打开文件\modules\mod_custom\mod_custom.xml
需要注意的是,joomla1.7(1.6)的配置文件写法有些改变,我们希望在模块的Basic选项中就能看到自定义更多的功能,那么找到代码(基本上是加在第一套选项中,方便使用)
<fields name=”basic”>…
添加代码:
解释一下,第一段是添加了一个“是否显示自定义更多链接的功能”,第二段则是自定义更多的具体链接地址。
这时候不妨刷新一下后台,在mod_custom模块中即可发现这两项选项。但现在功能还是没有的。
依照Joomla1.5的制作方法,同样道理在Joomla1.7(1.6)中也是通过templates/yourtemplate/html/modules.php来添加“更多(more)”的功能(youtemplate替换成您所使用的模板)
我们以Joomla1.7的自带模板beez_20模板为例,找到文件
/templates/beez_20/html/modules.php
打开文件之后,大家会发现很多行代码,对于不太懂代码的朋友来说,不需要畏惧那么多行的字母,老办法,依葫芦画瓢,不难发现,第一段的function…函数是默认的模块显示函数。那么就对它动手术(记得操作之前对modules.php做备份)
原代码:
function modChrome_beezDivision($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) { ?>
showtitle) { ?>
>title; ?> >
content; ?>
修改为
function modChrome_beezDivision($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) { ?>
showtitle) { ?>
>title; ?>
get('show_customlink')==1) : ?>
>'); ?>
>
content; ?>
说一下原理,原代码中的输出的标题相关代码为:
title; ?>
然后我们在标题的内容后面添加more的代码为:
get('show_customlink')==1) : ?>
>'); ?>
不难看出,这里先判断后台是否配置显示自定义更多的功能,然后输出一个带有自定义链接的MORE>>,这里的MORE>>可以替换成任意单词,笔者建议用英文代替,然后在译文语言文件中添加一项MORE>>的中文译,关于汉化,请参照:学会joomla相关简单汉化,或者完全汉化!个性汉化
为方便大家学习,此两个修改后的文件前往下载:
相关文件
解压后替换:/templates/beez_20/html/modules.php和/modules/mod_custom/mod_custom.xml