Создание плагина типа дополнительного поля
Основной класс плагина имеет структуру имени plgfieldsattachment_{название поля} и расширяет класс extrafield, определенный в файле /administrator/components/com_fieldsattach/helpers/extrafield.php
Например:
// no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.plugin.plugin' ); // require helper file $sitepath = JPATH_BASE ; $sitepath = str_replace ("administrator", "", $sitepath); JLoader::register('fieldattach', $sitepath.'/components/com_fieldsattach/helpers/fieldattach.php'); JLoader::register('fieldsattachHelper', $sitepath.'/administrator/components/com_fieldsattach/helpers/fieldsattach.php'); include_once $sitepath.'/administrator/components/com_fieldsattach/helpers/extrafield.php'; class plgfieldsattachment_shopcustomfields extends extrafield { protected $name = "shopcustomfields"; protected $path1; protected $documentpath; /* ******************************* */ }
Этот класс должен иметь следующий набор методов:
static function construct1( )
Служит для первоначальной инициации плагина.
Обычно:
static function construct1( ) { parent::getLanguage(self::getName()); }
static public function getName()
Возвращает имя поля.
Например:
static public function getName() { return $this->name; }
static function renderInput($articleid, $fieldsid, $value , $extras = null)
Метод выводит элементы редактирования поля в менеджере материалов админки.
Где:
$articleid - id материала или категории,
$fieldsid - id поля
$value - текущее значение поля
$extras - параметры поля
Параметры поля передаются в виде строки, которую надо расшифровать.
Например:
if(!empty($extras)) { $tmp = $extras; $lineas = explode(chr(13), $tmp); foreach ($lineas as $linea) { $tmp = explode('|', $linea); if(!empty( $tmp[0])) $size = $tmp[0]; if(count($tmp)>=1) if(!empty( $tmp[1])) $maxlenght = $tmp[1]; if(count($tmp)>=2) if(!empty( $tmp[2])) $defaultvalue = $tmp[2]; } }
static function getHTML($articleid, $fieldid, $category = false, $write=false)
Метод выводит содержимое элемента в вывод контента сайта.
Где:
$articleid - id материала или категории
$fieldsid - id поля
$category - признак что поле принадлежит категории
$write - способ вывод. если true - то выводится в стандартный поток вывода через echo, а если false, то присваивается глобальной переменной $globalreturn и выводится через return
Соответственно в методе должна быть определена глобальная переменная $globalreturn
global $globalreturn; /* .............. */ if($write) { echo $html; }else{ $globalreturn = $html; return $html; }
В этом методе вызывается метод extrafield::getTemplate($fieldsids,$name="") - вызывающий шаблон вывода из папки tmpl плагина, или их переопределенного файла в шаблоне.
function action( $articleid, $fieldsid, $fieldsvalueid)
Метод вызываемый при обработке посланной формы с морды сайта, в которой присутствует данное поле.
Где:
$articleid - id материала или категории
$fieldsid - id поля из таблицы #__fieldsattach
$fieldsvalueid - id значения поля из таблицы #__fieldsattach_values или #__fieldsattach_categories_values
Плагины данного типа имеют следующую структуру файлов: