Skip to main content

Tutorial: Erstelle ein eigenes Custom Field Plugin - owlimg.php

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.

Wird Zeit, dass wir uns kennenlernen!