Fangen wir nun aber endlich an
Alle Joomla-Plugins werden mit Hilfe einer Installationsdatei installiert. Diese Datei übergibt alles Wichtige zum Plugin an Joomla! wenn du das Plugin installierst.
Erstelle also dazu eine Datei mit dem nachfolgenden Inhalt und nenne sie coordstomap.xml.
<?xml version=“1.0″ encoding=“UTF-8”?>
<extension
version=“3.0″
type=“plugin”
group=“content”
method=“upgrade”>
<name>Content - Coordinates to OSMMap</name>
<author>Astrid Günther</author>
<creationDate>Dezember 2016</creationDate>
<copyright>Copyright (C) 2016 Astrid Günther</copyright>
<license> http://www.gnu.org/licenses/gpl-3.0.html</license>
<authorEmail>Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!</authorEmail>
<authorUrl>http://astrid-guenther.de</authorUrl>
<version>1.0.0</version>
<description>This plugin will replace gps coordinates with a link to osm. Requires Joomla 3.0 or greater.
Don’t forget to publish this plugin!
</description>
<files>
<filename plugin=“coordstomap”>coordstomap.php</filename>
</files>
</extension>
Die eigentliche Arbeit übernimmt die Plugin Datei. Erstelle dazu nun eine Datei mit dem nachfolgenden Inhalt und nenne sie coordstomap.php.
<?php
/**
* @package Joomla.Plugin
* @subpackage Content.Coordstomap
*
* @copyright Copyright 2015 Astrid Günther. All rights reserved.
* @license GNU General Public License version 2 or later;
*/
defined(‘_JEXEC’) or die;
/**
* Coords to map plugin class.
*
* @since 3.0
*/class PlgContentCoordstomap extends JPlugin
{
/**
* Plugin that add a hyperling to the osm map to all gsp coordinates.
*
* @param string $context The context of the content being passed to the plugin.
* @param mixed $row An object with a “text” property or the string to be cloaked.
* @param mixed $params Additional parameters. See {@see PlgContentEmailcloak()}.
* @param integer $page Optional page number. Unused. Defaults to zero.
*
* @return boolean true on success.
*/
ublic function onContentPrepare($context, $row, $params, $page = 0)
{
if (is_object($row))
{
return $this->coordstomap($row->text, $params);
}
return $this->coordstomap($row, $params);
}
/**
* Generate a search pattern based on link and text.
*
* @param string &$text The text enclosed by the link.
* @param string &$params The target of an email link.
*
* @return string A regular expression that matches a link containing the parameters.
*/
protected function coordsToMap(&$text, &$params)
{
$pattern = ’/([0-9.]+) ([0-9.]+)/’;
$replacement = ’<a href=“http://www.openstreetmap.org/#map=15/$1/$2″>$1 $2</a>’;
$text = preg_replace($pattern, $replacement, $text);
return true;
}
}
Wenn ich dir Namen vorschlagen musst du diese natürlich nicht übernehmen. Du kannst dein Plugin nennen wie du magst. Beachten solltest du aber, dass die XML-Datei genauso heißt wie das Plugin - oder manifest.xml.
Außerdem muss der Name deiner Klasse folgendermaßen zusammengesetzt sein: Plg + Art des Plugins + Name des Plugins
Bei uns im Beipspiel also: Plg + Content + Coordstomap = PlgContentCoordstomap
Packe nun die beiden Dateien in ein Zip-Archiv, nenne dieses zum Beispiel plg_content_coordstomap_v1.0.0. Hier spielt die Namenswahl keine Rolle. Installiere dieses Packet dann ganz normal über die Joomla Installationsroutine Erweiterung Plugin. Falls du mehr zum Thema Namenswahl und Versionsnummer wissen willst, empfehle ich dir die englischen Beiträge Extension name und den Abschnitt Erklärung der Versions-Nummerierungim Beitrag Welche Version von Joomla! sollte verwendet werden?
Wechsele nun in die Liste der installierten Plugins. Hier sollte nun dein Plugin in der Liste zu finden sein. Aktiviere dieses nun und probiere es aus! Dann erläutere ich die wenigen Zeilen des Programmcodes.