Основной класс плагина имеет структуру имени 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

 

Плагины данного типа имеют следующую структуру файлов: