Zum Hauptinhalt springen

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

Geschrieben von Elisa Foltyn

Dieses Joomla! Custom Field Plugin zeigt Bilder aus einem ausgewählten Ordner in einem "Owl Carousel" an. In diesem Tutorial erkläre ich dir wie du ein solches "Eigenes Feld Plugin" selbst bauen kannst. 

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!