Joomla文档中文翻译 - 模板参数详解 - 怎样创建自定义模板参数类型 III

joomla_documentation_168Joomla文档中文翻译 - 模板参数详解 - 怎样创建自定义模板参数类型 II

在前面一篇文档中,我们学习了怎样在templateDetails.xml文件中对应着我们新增的自定义模板参数进行调整;今天我们来看看怎样为自定义模板参数编写代码

为自定义模板参数编写代码的最简单的方法,就是找一个在功能上比较接近的现有的Joomla标准参数类型,将它的代码作为模板进行修改,以实现我们的需求例如,我们可以打开:Joomla根路径/libraries/joomla/html/parameter/element/text.php来看看定义text类型参数的代码。

对应这个文件的代码,我们可以仅基于JElement类(class)的fetchElement方法做些修改及覆盖。fetchElement方法用来为各种类型的Joomla参数生成可用于输入的HTML代码,它有4个变量可以使用:

1
fetchElement( $name, $value, &$node, $control_name )
  • $name: 参数的唯一名称。
  • $value: 参数的value值。
  • $node: 一个JSimpleXMLElement对象,对应着<param>元素。
  • $control_name: 参数的类型名称,如category或我们的自定义的newparm。

为了获取<param>中的各种变量值,我们要使用通过$node传递进来的对象的attributes方法。例如,要获取“class”变量的值,我们可以使用如下代码:

$class = $node->attributes( 'class' );

下面是一个完整的实例,我们使用fetchElement方法来定义一个简单的类似text类型的自定义参数:

function fetchElement( $name, $value, &$node, $control_name )
{
$class = $node->attributes( 'class' ) ? $node->attributes( 'class' ) : "text_area";

$return = '<input type="text"' .
'name="' . $control_name . '[' . $name . ']"' .
'id="' . $control_name . '[' . $name . ']"' .
'value="' . $value . '"' .
'class="' . $class . '" />';
return $return;
}

注意,$return中的HTML输出必须包括id属性,这样在参数设置表单中,这个表单项的label元素才可以使用“for”属性与它关联。

另外一个可能用到的是JElement类的fetchTooltip方法。这个方法用来在参数设置表单中为该参数的表单项输出label和提示文字;fetchTooltip有5个变量:

fetchTooltip( $label, $description, &$node, $control_name=,$name= )
  • $label: 对应着在<param>中定义的该参数类型的label文字。
  • $description: 对应着在<param>中定义的该参数类型的description文字。
  • $node: 一个JSimpleXMLElement对象,对应着<param>元素。
  • $control_name: 参数的类型名称,如category或我们的自定义的newparm。
  • $name: 参数的唯一名称。

关于模板参数及templateDetails.xml文件,可以参考的相关文档包括:

译者:Viiiix7210

如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: Tutorial:Template parameters


收藏与分享

添加评论


Security code
换一张图