Joomla! Programmierung/Programmierung/Komponenten/Erste Schritte
Inhaltsverzeichnis |
[Bearbeiten] Umgebung
Sie benötigen für die Komponentenentwicklung eine Serverumgebung auf der Sie Ihre Komponente testen und debuggen können. Zusätzlich sollten Sie einen geeigneten PHP Editor installieren der durch Syntaxhighlighting und das Verwalten von Projekten die Entwicklung vereinfacht. Falls Sie Ihre Komponente versionieren wollen benötigen Sie zusätzlich Versionsverwaltung wie z.B. Subversion und/oder Clients wie TortoiseSVN, der dies lokal ermöglicht.
[Bearbeiten] Name
Nun sollten Sie sich einen Namen für Ihre Komponente überlegen. In diesem Tutorial werden wir die Komponente com_jnafu nennen. Natürlich können Sie auch anfangen zu programmieren ohne einen spezifischen Namen zu nutzen, aber dann müssen Sie ggf. später viele Klassen und Dateien umbenennen.
[Bearbeiten] Ordnerstruktur
Erstellen Sie nun im Ordner
componentens folgende Ordnerstruktur für Ihre Komponente:
- com_jnafu
- Dies ist der Hauptordner Ihrer Komponente, hier werden alle Dateien und Ordner gespeichert.
- - assets
- Hier werden alle nicht PHP Dateiengespeichert, wie CSS und Javascriptdateien und allgemeine Bilder
- - controllers
- Hier werden alle Kontroller gespeichert, die vom Standardkontroller abweichen
- - models
- Der Modelordner wird später alle Dateien für die Beschaffung von Daten beinhalten.
- - views
- Hier werden später alle Dateien gespeichert, die für die Ausgabe der Komponente verantwortlich sind, als Standardausgabe kommt hier der Unterordner "jnafu" mit einem weiteren Unterordner "tmpl" hinein.
Ihre Ordnerstruktur sollte nun so aussehen:
Für das BackendToDo Verlinken kommt eine ähnliche Ordnerstruktur zu tragen. Hier wird es nur zwei zusätzlichen Ordner geben:
- - install
- Dieser Ordner enthält alle Dateien, die für die Installation der Komponente von Nöten sind. Später wird dieser zwar auf die "Rootebene" des Installationszips verschoben, aber aktuell ist es so einfacher ihn zu verwalten.
- - tables
- Dieser Ordner enthält alle Informationen der Datenbanktabellen, die mit der Komponente genutzt werden. Damit kann der Speichervorgang fast komplett automatisiert werden.
Erstellen Sie nun im Ordner
administrator/components folgende Ordnerstruktur:
[Bearbeiten] Datenbank vorbereiten
Nachdem die Ordnerstruktur steht sollten Sie sich Gedanken über die Strukturierung der Datenbanktabelle(n) machen. Natürlich ist es möglich dies erst zu tun, wenn Sie diese wirklich benötigen, aber es hat sich gezeigt, dass es einfacher ist, wenn man sich beim Programmieren an eine grobe Struktur orientieren kann.
Für unser Gästebuch benötigen wir am Anfang nur eine einfache Tabelle mit folgenden Felder:
- id
- Beinhaltet eine fortlaufende ID der Einträge als Integer der Länge 11. Wird gleichzeitig auch mit einem "auto_increment" und dem "primaty key" belegt
- text
- Der Gästebucheintrag
- date
- Das Datum des Eintrags
- modified
- Das Datum der letzten Änderung von einem Administrator
- modified_by
- Userid des Admins der den Beitrag bearbeitet hat
- author
- Der Autor des Eintrags
- published
- "0" = Beitrag ist nicht veröffentlicht, "1" = Beitrag ist veröffentlicht
- Die Emailadresse des Autors
- show_email
- "0" = Emailadresse wird nicht angezeigt, "1" = Emailadresse wird angezeigt
- homepage
- Die Homepage des Autors
- ip
- Die IP des Autors in ein unsigned Integer umgewandelt
- checked_out
- Userid des Admins, der den Beitrag gerade bearbeitet
- checked_out_time
- Zeit, wann der Eintrag von einem Admin bearbeitet worden ist
Dies führt uns zu folgender Tabelle, die sehr einfach per PHPMyAdmin oder ähnlichem erstellt werden kann.
CREATE TABLE `#__jnafu_entries` ( `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `text` TEXT NOT NULL , `date` DATETIME NOT NULL DEFAULT '00-00-0000 00:00:00' , `modified` DATETIME NOT NULL DEFAULT '00-00-0000 00:00:00' , `modified_by` int(11) UNSIGNED NOT NULL DEFAULT 0 , `author` VARCHAR( 255 ) NOT NULL , `published` TINYINT( 1 ) NOT NULL DEFAULT 0 , `email` VARCHAR( 255 ) NOT NULL , `show_email` TINYINT( 1 ) NOT NULL DEFAULT 0 , `homepage` VARCHAR( 255 ) DEFAULT NULL , `ip` INT( 10 ) UNSIGNED NOT NULL , `checked_out` INT( 11 ) NOT NULL DEFAULT 0 , `checked_out_time` DATETIME DEFAULT '00-00-0000 00:00:00' ) ENGINE = MYISAM ;
[Bearbeiten] Abschluss
Somit sind die ersten Schritte erledigt. Wir haben die Ordnerstruktur vorbereitet und die benötigte Datenbanktabelle erstellt. Natürlich wird es immer wieder vorkommen, dass man die Datenbanktabelle während des Entwickelns der Komponente optimieren muss oder zusätzliche Felder hinzufügen will, aber aktuell haben wir eine gute Basis um mit der Programmierung beginnen zu können.