Создание плагина типа дополнительного поля
Основной класс плагина имеет структуру имени 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
Плагины данного типа имеют следующую структуру файлов: