Joomla文档中文翻译 - 模板参数详解 - 怎样创建自定义模板参数类型 III
接Joomla文档中文翻译 - 模板参数详解 - 怎样创建自定义模板参数类型 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文件,可以参考的相关文档包括:
- Joomla文档中文翻译 - templateDetails.xml文件详解
- Joomla文档中文翻译 - 模板参数详解 - 什么是模板参数
- Joomla文档中文翻译 - 模板参数详解 - 怎样定义模板参数
- 专题:Joomla标准参数类型
译者:Viiiix7210
如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: Tutorial:Template parameters
| < Prev | Next > |
|---|
