-
Ein paar Fragen
Hallo Typolight Community,
ich erstelle momentan ein Modul und dabei sind ein paar Fragen aufgetaucht.
1) Wie lässt sich eine Einstellungsseite für mein Modul realisieren, die wie die Seiten Einstellungen von Typolight gleich als Formular geöffnet wird jedoch ihre Daten in der Datenbank und nicht in der Konfigurationsdatei speichert .
2) Wie kann die Reihenfolge im Backend-Menü verändert werden (Inhalte, Layout, Benutzerverwaltung), damit eine neue Kategorie unter "Inhalte" angezeigt wird.
Beste Grüße
-
Hallo billy,
willkommen in der TYPOlight-Community.
Wenn Du ein eigenes Modul erstellen möchtest, ist es am Einfachsten, wenn Du Dir dafür die Development-Extension installierst. Dann hast Du die Möglichkeit automatisch das Grundgerüst für ein neues Modul von TYPOlight erstellen zu lassen. In der neu erstellten Dateistruktur sind alle wichtigen Dateien bereits als Dummy enthalten. In den Dateien sind als Kommentar die wichtigsten Einstellungen beschrieben, so dass man mit etwas Geduld schon sehr weit kommt.
Für die Bedienoberfläche im Backend erstellst du sogenannte DCAs, die Deine Oberfläche beschreiben. Dann läuft alles sauber über die Standard-Backend-Routinen.
Im Weiteren gibt es noch die Doku und die Tutorials:
http://de.contaowiki.org/DevelopmentIndex
http://de.contaowiki.org/TutorialsDataContainer
http://api.https://contao.org/
http://de.contaowiki.org/TutorialsExtension
http://de.contaowiki.org/TutorialsHalloWeltExtension
... und die eigene TL-Installation liefert jede Menge Beispiele aus der Praxis. Schau Dir einfach bestehende Module unter /system/modules genauer an.
-
Hallo Hagen,
vielen Dank erstmal für die Unterstüztung.
Die Struktur meines Modules steht schon und die Tutorials hatte ich schon durchstöbert. Ich finde kein Beispiel außer die "Einstellungen" im Backend wo eine Seite nicht als Liste sondern direkt als Formular angezeigt wird. Vielleicht hast du einen Beispielcode?
-
Hallo billy,
dann nimm doch das als Vorlage!
Wenn Du nicht in einer Datei sondern in der Datenbank speichern möchtest, muss Du es im DCA entsprechend einstellen.
Beispiel aus tl_settings mit Filehandling:
PHP-Code:
// Config
'config' => array
(
'dataContainer' => 'File',
'closed' => true
),
Beispiel aus tl_layout mit Datenbank-Handling:
PHP-Code:
// Config
'config' => array
(
'dataContainer' => 'Table',
'enableVersioning' => true
),
Beides aus dem Verzeichnis /system/modules/backend/dca
-
Hallo Hagen,
die DCAs aus dem Backend hatte ich mir auch schon angesehen und genau so probiert, wie du es hier beschrieben hast.
Ich erhalte allerdings folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in C:\wamp\www\CMS\typolight-2.7.2\system\drivers\DC_Table.php on line 3135
Warning: vsprintf() [function.vsprintf]: Too few arguments in C:\wamp\www\CMS\typolight-2.7.2\system\drivers\DC_Table.php on line 3194
So sieht mein Code aus:
PHP-Code:
$GLOBALS['TL_DCA']['tl_meinmodul_settings'] = array
(
// Config
'config' => array
(
'dataContainer' => 'Table',
'enableVersioning' => true
),
// Palettes
'palettes' => array
(
'default' => 'einstellung1,einstellung2',
),
// Fields
'fields' => array
(
'einstellung1' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_meinmodul_settings']['einstellung1'],
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'maxlength'=>128)
),
'einstellung2' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_meinmodul_settings']['einstellung2'],
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'maxlength'=>128)
)
)
);
-
Kann nur raten, aber vielleicht liegt es an dem Komma am Ende der Default Zeile?
-
@BugBuster: das sollte nicht stören, die PHP-Releases, die ich kenne, können das ab.
@billy:
Hast Du die entsprechende Datenbank-Tabelle tl_meinmodul_settings in Deinem Modul .../meinmodul_settings/config/database.sql angelegt und über das Install-Tool in die Datenbank eingebunden?
Die Fehlermeldung mit foreach() ist sicherlich ein Folgefehler.
Deine database.sql müsste nach dem Beispiel etwa so aussehen:
Code:
CREATE TABLE `tl_meinmodul_settings` (
`id` int(10) unsigned NOT NULL auto_increment,
`tstamp` int(10) unsigned NOT NULL default '0',
`einstellung1` varchar(128) NOT NULL default '',
`einstellung2` varchar(128) NOT NULL default '',
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
Die Datenbank steht und sollte richtig angelegt sein, bei den anderen modulen mit Listenansicht funktioniert das auch einwandfrei. Frage: Woher weiß Typolight denn welcher Eintrag als Formular aufgerufen werden soll? Wird einfach der Eintrag mit der niedrigsten id gewählt oder fehlt hier noch was?
-
Hallo billy,
ich glaube, wir begeben uns jetzt beide auf den Holzweg. :confused:
Ich habe das wohl falsch verstanden. Ein solches Backend-Modul ist eine Sammlung von Datensätzen - oder noch zusätzlich mit Kategorien (dann mit Parent/Child-Datentabellen).
Was Du jetzt haben möchtest ist ja eigentlich nur 1 Datensatz, der Deine Einstellungen speichert. Da ist das DCA-Konzept wohl nicht drauf eingerichtet.
Evtl. findest Du Ansätze für Deine Idee in den Aufrufen der Menüs Einstellungen und Systemwartung, da diese nicht komplett auf einer Datenbank basieren. Die Menüdefinitionen dazu findest Du beim Backend-Modul in der config.php
Da muss ich aber erstmal passen.
-
Vielen Dank für die Hilfe.
Habe es jetzt anders gelöst.
Ich lasse die Einstellungen in der localconfig.php speichern und für das Feld das einen E-Mail-Text enthält (also Multiline) speichere ich einfach den Pfad zu einer Datei im tl_files Verzeichnis.
Beste Grüße
billy
-
Ich glaub ich hatte gerade ein ähnliches Problem ;)
DC_File bearbeitet Files - es ist also keine Zusammenarbeit mit der Datenbank möglich. Dafür steht eben DC_Table :)
Ich hab meine Einstellungen jetzt auch in der localconfig.php:cool: