Tutorial: Erstelle ein eigenes Custom Field Plugin - owlimg.php
Geschrieben von Elisa Foltyn
owlimg.php
Die Hauptdatei des Plugins ruft das Feld auf. Hier reicht im ersten Schritt folgende Angabe aus, um das Feld darzustellen:
<?php
/**
* @package Joomla.Plugin
* @subpackage Fields.Owl
*
* @copyright Copyright (C) 2017 NAME. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);
class PlgFieldsOwlimg extends FieldsListPlugin
{
}
Nach PlgFields
folgt der Name unseres Plugins, beginnend mit einem Großbuchstaben, also: PlgFieldsOwlimg
Mit extends
sagen wir, dass wir eine existierende Klasse erweitern wollen. In diesem Fall FieldsListPlugin
. Ist es kein Dropdown nehmen wir FieldsPlugin
.
Die Dateien zu diesen Klassen sind im Ordner administrator/components/com_fields/libraries
zu finden.
Nun wollen wir das Feld nicht einfach so anzeigen sondern festlegen, dass die Ordnerliste zum Beispiel aus dem images Ordner abgerufen werden soll, dazu verändern wir den soeben gezeigten Code folgendermaßen:
<?php
/**
* @package Joomla.Plugin
* @subpackage Fields.Owlimg
*
* @copyright Copyright (C) 2017 NAME. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);
class PlgFieldsOwlimg extends FieldsListPlugin
{
public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
{
$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);
if (!$fieldNode)
{
return $fieldNode;
}
$fieldNode->setAttribute('directory', 'images/');
$fieldNode->setAttribute('hide_default', true);
$fieldNode->setAttribute('hide_none', true);
return $fieldNode;
}
}
Wir fügen also nun in unsere Klasse PlgFieldsOwlimg
die Methode onCustomFieldsPrepareDom
ein und setzen ein paar Attribute, wie zum Beispiel das Startverzeichnis "images" in dem unsere Bilder und Bildordner liegen.