Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Installation
3 Frontend
4 Backend
5 Inhalte erstellen und verändern
6 Eine erste Webseite
7 Das Website-Design
8 Benutzer und Bereiche
9 Module, Plug-ins, Komponenten
10 Pflege der Webseite
11 Eine Site aufbauen
12 Was macht ein Template aus?
13 Tools zur Template-Erstellung
14 Barrierefreiheit
15 Aus der Trickkiste
16 Joomla! als professionelle Geschäftsplattform
17 Online-Shop: VirtueMart
18 Formulare: BreezingForms und ChronoForms
19 Dokumentenverwaltung: Docman und Attachments
20 Kalender: JEvent und iWebCal
21 Bildergalerien: Zoom Media Gallery und JoomGallery
22 Joomla! als Community-Treff
23 Weblogs: IDoBlog und MMS Blog
24 Wiki: JoomlaWiki
25 Forum: FireBoard
26 Gästebücher
27 Noch mehr Kommunikation
28 Installation beim Webhost
29 Backup und Upgrade
30 Tools
31 Standard-Erweiterungen
32 Mehrsprachigkeit
33 Suchmaschinenoptimierung
34 Statistik
35 Performance
36 Datentransfer und FTP-Modus
37 Sicherheit
38 Troubleshooting
39 Mein erstes Modul
40 Die Joomla!-API
41 Plug-ins erstellen
42 Eine eigene Komponente
A Parameter der unterschiedlichen Menütypen
B Die Joomla!-API
C Glossar
D Inhalt der DVD
Stichwort
Ihre Meinung?

Spacer
<< zurück
Joomla! 1.5 von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das umfassende Handbuch
Buch: Joomla! 1.5

Joomla! 1.5
geb., mit DVD
820 S., 34,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-881-1
Pfeil 42 Eine eigene Komponente
Pfeil 42.1 Die Installationsdateien
Pfeil 42.1.1 Die Komponenten-Beschreibung
Pfeil 42.1.2 Die Datenbank
Pfeil 42.1.3 Zusätzliche Installationsanweisungen
Pfeil 42.2 Die Darstellung im Frontend
Pfeil 42.2.1 Einstiegsskript und Controller
Pfeil 42.2.2 Das Model
Pfeil 42.2.3 Die Ausgabe
Pfeil 42.3 Die Komponentenverwaltung
Pfeil 42.3.1 Das Grundgerüst
Pfeil 42.3.2 Die Listenansicht
Pfeil 42.3.3 Ändern der Daten
Pfeil 42.3.4 Bearbeitungsmodus

»Der Tanz gibt uns eine Art von Rausch, in welchem die Gemüter die Verstellung vergessen.« Adolph Knigge

42 Eine eigene Komponente

Komponenten sind wesentlich komplexere Elemente als Plug-ins oder Module. Neben der Darstellung im Frontend gibt es auch im Backend einen Manager und ein eigenes Menü. Zudem greifen Komponenten auf die Datenbank zu, so dass auch hier eine Schnittstelle geschaffen werden muss. Daher besteht eine Komponente in der Regel auch aus mehreren Dateien. Wir wollen im Folgenden eine Komponente entwickeln, in der Tanzpaare zusammen mit einem internen Turnier-Ranking gespeichert werden können, so dass man sich immer die aktuelle Vereinswertung ansehen kann. Dazu benötigen wir im ersten Schritt die folgenden Dateien in einem separaten Installationsverzeichnis, z. B. pairrank_inst:

Installationsdateien

  • pairrank.xml
    Daten für die Installation.
  • install.php
    Ein zusätzliches Installationsskript. Wird auch dazu genutzt, um nach der Installation Informationen für den Benutzer anzuzeigen.
  • install.sql
    Erstellt die notwendigen Datenbanktabellen und füllt diese mit ersten Daten.
  • uninstall.sql
    Löscht bei der Deinstallation der Komponente die eigenen Datenbanktabellen.

Frontend

  • pairrank.php
    Die Basis des Frontend-Teils der Komponente.
  • controller.php
    Enthält die Verarbeitungslogik der Komponente.
  • views/pairrank/view.html.php
    Die View-Klasse, die die Daten zur Darstellung aufbereitet.
  • views/pairrank/tmpl/default.php
    Das HTML-Template für die Frontend-Ausgabe.
  • models/pairrank.php
    Enthält das Datenmodell und Methoden für den Zugriff und die Speicherung.

Backend

  • admin.pairrank.php
    Enthält die Programmlogik für das Backend.

Hoffentlich sind Sie nicht erschrocken über die Fülle der Dateien, die erstellt werden müssen. Wir werden sie im Folgenden im Einzelnen durchsprechen. Vielleicht haben Sie sich gewundert, warum im Backend-Bereich nur eine Datei zu finden ist. Diese fungiert momentan nur als Platzhalter; später in diesem Kapitel werden wir sie weiter ausbauen.


Basis-Skript und Controller?
Vielleicht fragen Sie sich, warum der Controller nicht gleich im Basis-Skript enthalten ist. Eine mögliche Erklärung ist, dass die Joomla!-Entwickler aus Kompatibilitätsgründen noch Raum für »Spaghetti-Komponenten« lassen wollten, die alles in einer Datei verwalten. Zudem ist der Controller ein Objekt, das erst aus einem »Hauptprogramm« heraus erstellt werden muss.


Bevor wir beginnen, sollten wir uns noch Gedanken über den Aufbau unserer Datenbasis machen. Die Tabelle #__pairrank soll die folgenden Spalten enthalten:


Tabelle 42.1 Die Spalten der Datenbankeinträge

Spalte Wert Beschreibung

id

Integer

Eine fortlaufende Nummer zur eindeutigen Identifizierung des Datensatzes.

pair

Text

Die Namen der Tänzer.

points

Integer

Die Anzahl der Punkte.

published

Small Integer

1 für publiziert, 0 für versteckt.



Rheinwerk Computing - Zum Seitenanfang

42.1 Die Installationsdateien Zur nächsten ÜberschriftZur vorigen Überschrift

Der Installationsprozess bei einer Komponente ist aufwendiger als bei den anderen Erweiterungen. Komponenten bestehen aus einem Frontend- und einem Backend-Bereich und verwalten häufig eigene Daten.


Rheinwerk Computing - Zum Seitenanfang

42.1.1 Die Komponenten-Beschreibung Zur nächsten ÜberschriftZur vorigen Überschrift

Die XML-Datei, die die Installation beschreibt, enthält einige Tags, die wir bisher noch nicht verwendet haben.

1  <?xml version="1.0" encoding="UTF-8"?> 
2  <install type="component" version="1.5"> 
3    <name>pairrank</name> 
4    <files folder="site"> 
5      <filename>pairrank.php</filename> 
6      <filename>controller.php</filename> 
7      <filename>views/pairrank/view.html.php</filename> 
8      <filename>views/pairrank/tmpl/default.php</filename> 
9      <filename>models/pairrank.php</filename> 
10    </files> 
11    <install> 
12      <sql> 
13        <file charset="utf8" driver="mysql">install.sql</file> 
14      </sql> 
15    </install> 
16    <uninstall> 
17      <sql> 
18       <file charset="utf8" driver="mysql">uninstall.sql</file> 
19      </sql> 
20    </uninstall> 
21    <installfile>install.php</installfile> 
22    <uninstallfile>install.php</uninstallfile> 
23    <administration> 
24      <menu>Paar-Ranking</menu> 
25      <submenu> 
26        <menu act="all">Verwalten</menu> 
27      </submenu> 
28      <files folder="admin"> 
29        <filename>admin.pairrank.php</filename> 
30        <filename>install.sql</filename> 
31        <filename>uninstall.sql</filename> 
32      </files> 
33    </administration> 
34  </install>

Listing 42.1 pairrank.xml

Zu den Zeilen 1–3 ist lediglich anzumerken, dass der Eintrag type in Zeile 2 natürlich den Wert component haben muss. Im <files>-Tag der Zeilen 4 –10 werden die Dateien vermerkt, die für den Frontend-Teil zuständig sind. Beachten Sie das Attribut folder="site". In den Zeilen 11–15 und 16 –20 wird die SQL-Datei angegeben, die bei der Installation bzw. der Deinstallation ausgeführt wird. PHP-Skripten, die bei Installationsvorgängen zusätzlich ausgeführt werden sollen, werden in den Zeilen 21 und 22 festgelegt. Der Bereich <administration> legt die Daten für das Backend fest (Zeilen 23–33). Bestimmen Sie zunächst den Namen des Eintrags im Components-Menü mit <menu> (Zeile 24) und dann im <submenu>-Tag die Untermenüs (Zeilen 25–27). Hier können Sie im Attribut act einen Wert angeben, der später beim Aufruf an die Komponente übergeben wird. Danach folgt nach bekanntem Schema eine Liste der Dateien, die zur Administrationsseite der Komponente gehören (Zeilen 28–32). Beachten Sie, dass hier die SQL-Dateien nochmals angegeben sind.

Die Dateistruktur im Installationsverzeichnis sieht dann folgendermaßen aus:

mod_pairrank
    install.php
    pairrank.xml
    site
       controller.php
       pairrank.php
       views
          pairrank
             view.html.php
             tmpl
                default.php
       models
          pairrank.php
    admin
       admin.pairrank.php
       install.sql
       uninstall.sql


Rheinwerk Computing - Zum Seitenanfang

42.1.2 Die Datenbank Zur nächsten ÜberschriftZur vorigen Überschrift

Sehen wir uns als Nächstes die Dateien an, die mit der Datenbank zu tun haben. In install.sql finden Sie Anweisungen, die bei der Installation ausgeführt werden.

1   DROP TABLE IF EXISTS `#__pairrank`; 
2   CREATE TABLE `#__pairrank` ( 
3      `id` INT NOT NULL AUTO_INCREMENT, 
4      `pair` TEXT NOT NULL, 
5      `points` SMALLINT NOT NULL, 
6      `published` TINYINT(1) NOT NULL, 
7      PRIMARY KEY (`id`) 
8   ); 
9   INSERT INTO `#__pairrank` VALUES (1,'Josef/Maria',200,1); 
10  INSERT INTO `#__pairrank` VALUES (2,'Hans/Agathe',400,1);

Listing 42.2 install.sql

Sollten sich noch alte Daten (beispielsweise aus einer früheren Version der Komponente) in der Datenbank befinden, so werden diese in Zeile 1 gelöscht.


Nicht zwingend
Wenn Sie nicht wollen, dass die alten Daten bei jeder Installation gelöscht werden, können Sie diese Zeile auch weglassen. Dann müssen Sie jedoch sicherstellen, dass sich die Tabellenstruktur nicht ändert.


In den Zeilen 2–8 wird die Datenbank gemäß der Struktur angelegt, die wir in Tabelle 42.1 beschrieben haben. Beachten Sie, dass statt des Tabellenpräfixes die Zeichenkette #__ verwendet wird. Diese wird bei der Installation automatisch durch das im entsprechenden System gültige Präfix ersetzt.

Wenn die Komponente deinstalliert wird, sollten die entsprechenden Datenbanktabellen ebenfalls gelöscht werden. Die nötigen Befehle werden in der Datei uninstall.sql hinterlegt:

1   DROP TABLE IF EXISTS ´#__pairrank´;

Listing 42.3 uninstall.sql

Diese besteht in unserem Fall nur aus einer Zeile, mit der die Tabelle pairrank entfernt wird. Beachten Sie auch hier das #__ als Präfix.


Rheinwerk Computing - Zum Seitenanfang

42.1.3 Zusätzliche Installationsanweisungen topZur vorigen Überschrift

Das zusätzliche Installations- und Deinstallationsskript sieht in unserem Fall sehr bescheiden aus und könnte zur Not auch weggelassen werden. Dann müssen Sie allerdings auch die Zeilen 21–22 aus der XML-Datei löschen.

1  <?php 
2  defined('_JEXEC') or die('Restricted access'); 
3  function com_install() { 
4    echo 'Schön, dass Sie unsere Komponente benutzen'; 
5  } 
6  function com_uninstall() { 
7    echo 'Bis bald'; 
8  } 
9  ?>

Listing 42.4 install.php

In der Datei sind die Funktionen für beide Aktionen, Installation und Deinstallation, hinterlegt. Wichtig ist, dass Sie dabei die Namenskonvention einhalten: Sie brauchen eine Funktion com_install für die Installation und eine Funktion com_uninstall für das Entfernen der Komponente. Wir haben in beiden Funktionen nur beispielhaft eine Ausgabe implementiert. Diese wird mit der Erfolgsmeldung angezeigt, die ausgegeben wird, wenn die Installation oder Deinstallation korrekt ausgeführt wurde.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Joomla! 1.5 - Das umfassende Handbuch





Joomla! 1.5 -
Das umfassende Handbuch

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Joomla! 3.5






 Joomla! 3.5


Zum Katalog: Top-Rankings bei Google und Co






 Top-Rankings bei
 Google und Co


Zum Katalog: Erfolgreiche Websites






 Erfolgreiche Websites


Zum Katalog: WordPress 4






 WordPress 4


Zum Katalog: Webseiten erstellen für Einsteiger






 Webseiten erstellen
 für Einsteiger


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de