Joomla文档中文翻译 - 怎样在模板中自定义模块结构(module chrome)
要在Joomla模板中增加自定义化的模块结构(module chrome),我们需要在模板路径里的html文件夹中创建一个modules.php文件。例如:
Joomla根路径/templates/模板名/html/modules.php
在这个文件中,我们需要创建一个名为modChrome_STYLE的函数,其中STYLE部分为自定义的模块结构名称。如下所示,这个函数需要三个参数,$module,&$params和&$attribs
<?php
function modChrome_STYLE( $module, &$params, &$attribs )
{
/* chromed Module output goes here */
}
?>
通过这个函数,我们可以为我们的自定义模块添加任何可用的模块属性。下面几个模块属性是我们需要重点了解的: $module->showtitle,$module->content和$module->title。$module->showtitle是一个布尔变量,值可以为“true”(当模块标题被设置为显示时)和“false”(当模块标题被设置为隐藏时)。$module->content和$module->title分别负责返回模块内容与模块标题文字。下面是一段实例,我们通过判断$module->showtitle的值来确定是否输出模块标题。
<?php
if ($module->showtitle)
{
echo '<h2>' .$module->title .'</h2>';
}
?>
modChrome_STYLE函数的参数$params负责读取模块参数(Module parameters)。例如,我们可以在管理后台的模块管理中为某个模块添加后缀class名,这个class名就会存储在该模块的moduleclass_sfx参数中;如果我们需要在模块结构中创建包含这个class的<div>,那么可以使用类似下面这样的代码:
<div class="<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<!-- div contents -->
</div>
自定义模块属性
我们可以通过<jdoc:include />声明来为模块结构添加更多额外的自定义属性。这些自定义属性可以是我们所需的任何形式,它们会被存储在modChrome_STYLE函数的第三个参数$attibs中。下面的代码展示了一个比较完整的modChrome_custom函数:
<?php
function modChrome_custom( $module, &$params, &$attribs ) {
if (isset( $attribs['headerLevel'] ))
{
$headerLevel = $attribs['headerLevel'];
} else {
$headerLevel = 3;
}
if (isset( $attribs['background'] ))
{
$background = $attribs['background'];
} else {
$background = 'blue';
}
echo '<div class="' .$params->get( 'moduleclass_sfx' ) .'" >';
if ($module->showtitle)
{
echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
}
echo '<div class="' .$background .'">';
echo $module->content;
echo '</div>';
echo '</div>';
}
?>
接下来我们可以通过向<jdoc:include />传递所需的参数来为模块设置背景色和标题级别(h1,h2,h3...);如果不做设置,那么根据modChrome_custom函数中的定义,背景色默认为蓝色,标题级别为h3。设置方法参照下图:
另外,这个帖子中讲到了很多关于向模块结构传递参数的问题,可以作为参考。
译者:Viiiix7210
如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: Applying custom module chrome
| < Prev | Next > |
|---|

评论刷新