Vorhandene Module erweitern: Unterschied zwischen den Versionen
Aus Contao Community Documentation
K (→Erstellen des neuen Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur) |
(div. Erweiterungen) |
||
Zeile 22: | Zeile 22: | ||
=Detailanleitung= | =Detailanleitung= | ||
==Erstellen des neuen Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur== | ==Erstellen des neuen Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur== | ||
+ | In dieser Anleitung wird die Extension-Erweiterung lokal erstellt und anschließend auf den Webserver hoch geladen. | ||
<pre> | <pre> | ||
TL_ROOT/system/modules/calendarFreeEntry | TL_ROOT/system/modules/calendarFreeEntry | ||
Zeile 70: | Zeile 71: | ||
==Erweiterung der vorhandenen Sprachdateien== | ==Erweiterung der vorhandenen Sprachdateien== | ||
− | + | ''TL_ROOT/system/modules/calendarFreeEntry/languages/de/tl_calendar_events.php'' | |
− | + | ||
− | + | ||
<pre> | <pre> | ||
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); | <?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); | ||
Zeile 81: | Zeile 80: | ||
</pre> | </pre> | ||
− | ''TL_ROOT/system/modules/calendarFreeEntry/languages/en'' | + | ''TL_ROOT/system/modules/calendarFreeEntry/languages/en/tl_calendar_events.php'' |
<pre> | <pre> | ||
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); | <?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); | ||
Zeile 109: | Zeile 108: | ||
?> | ?> | ||
</pre> | </pre> | ||
+ | |||
+ | Dies war die letzte Datei, die erstellt / bearbeitet werden musste. Nun muss das ganze Paket in die Contao-Installation hoch geladen werden. Beim Hochladen ist darauf zu achten, dass der Ordner an die richtige Stelle kopiert wird. | ||
+ | |||
+ | [[Datei:moduleext_ftp.png|FTP]] | ||
==Datenbank-Update, Veranstaltung eintragen, Test== | ==Datenbank-Update, Veranstaltung eintragen, Test== | ||
− | Über ''<nowiki>http://www.meinedomain.de/typolight/install.php</nowiki>'' ein Datenbank-Update durchführen (vorgeschlagene Änderungen per Haken aktivieren => Update Database) | + | Über ''<nowiki>http://www.meinedomain.de/typolight/install.php</nowiki>'' ein Datenbank-Update durchführen (vorgeschlagene Änderungen per Haken aktivieren => Update Database). |
+ | |||
+ | [[Datei:moduleext_updatedb.png|Datenbank-Update durchführen]] | ||
+ | |||
+ | Anschließend im Backend unter Themes das MusicAcademy-Theme bearbeiten und bei den Frontend-Modulen das Modul ''Calendar - Event List (Eventliste)'' suchen und dieses ebenfalls bearbeiten. Unter dem Punkt ''Template-Einstellungen'' wählt man nun das neu erstellte Template ''event_list_freeEntry'' aus. | ||
+ | |||
+ | [[Datei:moduleext_template.png|Erstelltes Template auswählen]] | ||
+ | |||
+ | Wenn man nun ein neues Event erstellt oder ein vorhandenes bearbeitet, hat man unter dem ''Title''-Feld eine neue Auswahl ''Free entry'' zur Verfügung. | ||
+ | |||
+ | [[Datei:moduleext_editevent.png|Event bearbeiten]] | ||
+ | |||
+ | Wird diese Einstellung aktiviert, so wird im Frontend in der Eventliste (.../contao_music/index.php/event-list.html?month=201001) zu den normalen Informationen zusätzlich der Eintrag ''Free Entry'' angezeigt. | ||
+ | |||
+ | [[Datei:moduleext_fe.png|Frontend Ausgabe]] | ||
=Credits= | =Credits= | ||
Die Orginal-Anleitung wurde erstellt von manela<br /> | Die Orginal-Anleitung wurde erstellt von manela<br /> | ||
Div. Korrekturen und Anpassungen an die Contao-Version durch [[user:Toflar|Toflar]], [[user:BugBuster|BugBuster]] und [[user:manitougs|manitougs]] | Div. Korrekturen und Anpassungen an die Contao-Version durch [[user:Toflar|Toflar]], [[user:BugBuster|BugBuster]] und [[user:manitougs|manitougs]] |
Version vom 29. Juni 2010, 20:53 Uhr
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
betrifft | |
---|---|
Contao Version | 2.9 RC1 |
Inhaltsverzeichnis
- 1 Vorwort
- 2 Anforderung
- 3 Kurzanleitung
- 4 Detailanleitung
- 4.1 Erstellen des neuen Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur
- 4.2 Erweiterung der vorhandenen Datenbanktabelle tl_calendar_events
- 4.3 Erweiterung des vorhandenen Data Container Arrays (DCA)
- 4.4 Erweiterung der vorhandenen Sprachdateien
- 4.5 Erweiterung des vorhandenen Templates
- 4.6 Datenbank-Update, Veranstaltung eintragen, Test
- 5 Credits
Vorwort
Dieses Tutorial soll neben anderen vorhandenen Tutorials beim Einstieg in die Modulprogrammierung helfen. Hier wird kein eigenständiges Modul erstellt, sondern auf ein vorhandenes Core-Modul und der Demo-Installation Music Academy aufgebaut.
Anforderung
Die Music Academy hat in diesem Jahr so viele talentierte Schüler, dass sie mit Hilfe deren musikalischer Unterstützung verschiedene Abendveranstaltungen durchführen möchte. Manche der Veranstaltungen werden mit kostenlosem Eintritt angeboten, andere Veranstaltungen sollen kostenpflichtig sein. Um den besonders kostenbewussten Musikliebhabern in der Veranstaltungsliste auf einem Blick aufzuzeigen, welche Veranstaltungen kostenfrei sind, soll diese Information in Zukunft bei jeder einzelnen Veranstaltung direkt angezeigt werden.
Zur Umsetzung der Anforderung wird das Formular zur Eingabe von Terminen um eine zusätzliche Checkbox erweitert. Diese Checkbox ist bei Veranstaltungen mit kostenlosem Eintritt zu aktivieren. Falls die Prüfung im Template ergibt, dass der Wert der Checkbox gesetzt ist, wird eine entsprechende Information im Frontend ausgegeben.
Kurzanleitung
- TL_ROOT/system/modules/calendarFreeEntry - neues Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur erstellen
- TL_ROOT/system/modules/calendarFreeEntry/config/database.sql – Datenbanktabelle um neues Feld freeEntry erweitern
- TL_ROOT/system/modules/calendarFreeEntry/dca/tl_calendar_events.php – Data Container Array erweitern
- TL_ROOT/system/modules/calendarFreeEntry/languages – Sprachdateien um neues Feld freeEntry erweitern
- TL_ROOT/system/modules/calendarFreeEntry/templates – Erweiterung Template um Laden der Sprachdatei, Prüfung des Feldes freeEntry und abhängiger Ausgabe
- http://www.meinedomain.de/typolight/install.php - Datenbank-Update durchführen, Template in der Eventliste ändern, Termin einstellen, testen
Detailanleitung
Erstellen des neuen Modulverzeichnis mit nötiger Verzeichnis- und Dateistruktur
In dieser Anleitung wird die Extension-Erweiterung lokal erstellt und anschließend auf den Webserver hoch geladen.
TL_ROOT/system/modules/calendarFreeEntry TL_ROOT/system/modules/calendarFreeEntry/config TL_ROOT/system/modules/calendarFreeEntry/config/database.sql TL_ROOT/system/modules/calendarFreeEntry/dca TL_ROOT/system/modules/calendarFreeEntry/dca/tl_calendar_events.php TL_ROOT/system/modules/calendarFreeEntry/languages TL_ROOT/system/modules/calendarFreeEntry/languages/de TL_ROOT/system/modules/calendarFreeEntry/languages/de/tl_calendar_events.php TL_ROOT/system/modules/calendarFreeEntry/languages/en TL_ROOT/system/modules/calendarFreeEntry/languages/en/tl_calendar_events.php TL_ROOT/system/modules/calendarFreeEntry/templates/ TL_ROOT/system/modules/calendarFreeEntry/templates/event_list_freeEntry.tpl
Erweiterung der vorhandenen Datenbanktabelle tl_calendar_events
Dazu die Datei TL_ROOT/system/modules/calendarFreeEntry/config/database.sql öffnen und folgenden Inhalt einfügen:
-- -- Table `tl_calendar_events` -- CREATE TABLE `tl_calendar_events` ( `freeEntry` char(1) NOT NULL default '', ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Anschliessend speichern und schliessen.
Erweiterung des vorhandenen Data Container Arrays (DCA)
Dazu die Datei TL_ROOT/system/modules/calendarFreeEntry/dca/tl_calendar_events.php öffnen und folgenden Inhalt einfügen:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); //Anzeige im Backend $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default'] = str_replace('title','title,freeEntry', $GLOBALS['TL_DCA']['tl_calendar_events']['palettes']['default']); //Beschreibung des Feldes $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['freeEntry'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['freeEntry'], 'inputType' => 'checkbox' ) ?>
Anschliessend speichern und schliessen.
Erweiterung der vorhandenen Sprachdateien
TL_ROOT/system/modules/calendarFreeEntry/languages/de/tl_calendar_events.php
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); $GLOBALS['TL_LANG']['tl_calendar_events']['freeEntry'] = array('Free entry', 'Zeigen Sie den Termin mit kostenlosen Eintritt an.'); ?>
TL_ROOT/system/modules/calendarFreeEntry/languages/en/tl_calendar_events.php
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!'); $GLOBALS['TL_LANG']['tl_calendar_events']['freeEntry'] = array('Free Entry', 'Display the event with free entry.'); ?>
Erweiterung des vorhandenen Templates
Damit im Template die gewünschte Information ausgegeben werden kann, wird das vorhandene Template der Kerninstallation kopiert, in das neue Modulverzeichnis eingefügt und die PHP-Logik entsprechend ergänzt. Dazu wird eine Prüfung eingebaut, die prüft, ob der Wert der Checkbox gesetzt wurde. Bei gesetztem Wert soll im Template sprachabhängig die Information ausgegeben, dass es sich um eine kostenlose Veranstaltung handelt. Damit die Inhalte der Sprachdateien zugegriffen werden kann, muss die Sprachdatei zu erst noch geladen werden. Contao wurde so konzipiert, dass ausschließlich nur die benötigten Ressourcen geladen werden, um das System auch in der Laufzeit möglichst performant zu halten.
Vorhandene Datei aus TL_ROOT/system/modules/calendar/templates/event_list.tpl in TL_ROOT/system /modules/calendarFreeEntry/templates kopieren, in event_list_freeEntry.tpl umbenennen und entsprechend erweitern (komplettes Beispiel s. angehängte zip-Datei):
//Load language file <?php $this->loadLanguageFile('tl_calendar_events'); ?> . . . //Check field freeEntry <?php if ($this->freeEntry): ?> <p class="freeEntry"><?php echo $GLOBALS['TL_LANG']['tl_calendar_events']['freeEntry']0; ?></p> <?php endif; . . . ?>
Dies war die letzte Datei, die erstellt / bearbeitet werden musste. Nun muss das ganze Paket in die Contao-Installation hoch geladen werden. Beim Hochladen ist darauf zu achten, dass der Ordner an die richtige Stelle kopiert wird.
Datenbank-Update, Veranstaltung eintragen, Test
Über http://www.meinedomain.de/typolight/install.php ein Datenbank-Update durchführen (vorgeschlagene Änderungen per Haken aktivieren => Update Database).
Anschließend im Backend unter Themes das MusicAcademy-Theme bearbeiten und bei den Frontend-Modulen das Modul Calendar - Event List (Eventliste) suchen und dieses ebenfalls bearbeiten. Unter dem Punkt Template-Einstellungen wählt man nun das neu erstellte Template event_list_freeEntry aus.
Wenn man nun ein neues Event erstellt oder ein vorhandenes bearbeitet, hat man unter dem Title-Feld eine neue Auswahl Free entry zur Verfügung.
Wird diese Einstellung aktiviert, so wird im Frontend in der Eventliste (.../contao_music/index.php/event-list.html?month=201001) zu den normalen Informationen zusätzlich der Eintrag Free Entry angezeigt.
Credits
Die Orginal-Anleitung wurde erstellt von manela
Div. Korrekturen und Anpassungen an die Contao-Version durch Toflar, BugBuster und manitougs