为Joomla 3.x模块创建自定义字段

时间:2016-01-13 17:23:28

标签: php xml joomla joomla3.0

我正在为Joomla 3.x创建一个模块,我希望有一个自定义参数。我检查了joomla文档的Creating a custom form field type页面,并检查了具有自定义字段的第三方模块,但我无法使其正常工作。

可能我错过了一步或做错了什么,但我无法弄清楚是什么。

这是我到目前为止所做的:

在模块xml文件中,我添加了自定义字段集和字段,如下所示:

<fielset name="TITLE" addfieldpath="/modules/mod_mymodule/admin">
  <field type="customfield" name="custom" />
</fieldset>

我创建了一个名为customfield.php的文件,在文件中我有这个:

<?php
defined('_JEXEC') or die;
jimport('joomla.form.formfield');

class JFormFieldCustomfield extends JFormField {
    protected $type = 'customfield';

    public function getInput(){
        $custom_form = '<div class="input-prepend input-append">';
        $custom_form .= '<div class="media-preview add-on"><span title="" class="hasTipPreview"><span class="icon-eye"></span></span></div>';
        $custom_form .= '<input type="text" id="jform_params_backgroundimage" class="input-small hasTipImgpath" readonly value="" aria-invalid="false" name="jform[params][backgroundimage]" />';
        $custom_form .= '<a rel="{handler: \'iframe\', size: {x: 800, y: 500}}" href="index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=com_modules&amp;author=&amp;fieldid=jform_params_backgroundimage&amp;folder=" title="'.JText::_('JSELECT').'" class="modal btn">'.JText::_('JSELECT').'</a>';
        $custom_form .= '<a onclick="jInsertFieldValue('', \'jform_params_backgroundimage\'); return false;" href="#" title="" class="btn hasTooltip" data-original-title="'.JText::_('JCLEAR').'"><span class="icon-remove"></span></a>';
        $custom_form .= '</div>';

        return $custom_form;
    }
}
?>

这基本上是媒体字段类型的副本,但这仅用于测试,显然我不需要自定义字段。

字段集在管理员中显示为应该显示的选项卡,但字段集不显示。比我在第三方模块中看到的那样,将addfilepath添加到<fields name="params" addfieldpath="/modules/mod_carousel/admin">,但仍然没有。

我错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:0)

仅使用此代码,不要使用类

<?php
defined('_JEXEC') or die;
$custom_form = '<div class="input-prepend input-append">';
        $custom_form .= '<div class="media-preview add-on"><span title="" class="hasTipPreview"><span class="icon-eye"></span></span></div>';
        $custom_form .= '<input type="text" id="jform_params_backgroundimage" class="input-small hasTipImgpath" readonly value="" aria-invalid="false" name="jform[params][backgroundimage]" />';
        $custom_form .= '<a rel="{handler: \'iframe\', size: {x: 800, y: 500}}" href="index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=com_modules&amp;author=&amp;fieldid=jform_params_backgroundimage&amp;folder=" title="'.JText::_('JSELECT').'" class="modal btn">'.JText::_('JSELECT').'</a>';
        $custom_form .= '<a onclick="jInsertFieldValue('', \'jform_params_backgroundimage\'); return false;" href="#" title="" class="btn hasTooltip" data-original-title="'.JText::_('JCLEAR').'"><span class="icon-remove"></span></a>';
        $custom_form .= '</div>';

        echo $custom_form;