In diesem Artikel zeige ich wie man die Contao Erweiterungen Rocksolid-Columns und subColumns im F Modul ohne Probleme zum laufen bringt.
Das Problem:
Mit dem F Modul kann man an zwei Stellen die Inhaltselemente ein pflegen einmal über die Listenansicht und Detailansicht. Damit das Ordnungsgemäß funktioniert habe ich die tl_content Tabelle um eine Spalte erweitert. Diese Spalte (fview) benötigt immer einen Wert entweder list oder detail. Wenn dieser Wert nicht gesetzt ist, werden auch keine Inhaltselemente angezeigt.
Ich habe das tl_content DCA um ein onsubmit_callback erweitert. Damit wird der fview Wert gesetzt und alles funktioniert wie es sein sollte.
Aber! Die RockSolid Columns oder auch subColumns Erweiterung erzeugen den schließenden Umschlag immer automatisch, ohne das mein onsubmit_callback Hook getriggert wird. Dabei wird das fview Wert nicht gesetzt und das Inhaltselement entsprechend nicht angezeigt. Bei RockSolid Columns wird sogar eine Fehlermeldung im Frontend generiert.
Missing column wrapper start element before column wrapper stop element ID *
Die Lösung
Es müssen in den jeweiligen Modulen kleine Änderungen gemacht werden. Die Patch Datei herunterladen:
* zuletzt aktualisiert: 18.08.2016
** zuletzt aktualisiert: 13.03.2016
RockSolid Columns Patchen:
Wir öffnen die Columns.php im system/modules/rocksolid-columns/src/MadeYourDay/Contao/Verzeichnis. In der Columns.php Datei suchen wir die onsubmitCallback Funktion. Alles was wir jetzt machen müssen, ist es diesen Code-Block zu ersetzen:
\Database::getInstance()
->prepare('INSERT INTO tl_content %s')
->set(array(
'pid' => $activeRecord->pid,
'ptable' => $activeRecord->ptable ?: 'tl_article',
'type' => substr($activeRecord->type, 0, -5) . 'stop',
'sorting' => $activeRecord->sorting + 1,
'tstamp' => time(),
))
->execute();
In diesen Code-Block müssen wir folgendes hinzufügen:
'fview' => \Input::get('view') ?: ''
\Database::getInstance()
->prepare('INSERT INTO tl_content %s')
->set(array(
'pid' => $activeRecord->pid,
'ptable' => $activeRecord->ptable ?: 'tl_article',
'type' => substr($activeRecord->type, 0, -5) . 'stop',
'sorting' => $activeRecord->sorting + 1,
'fview' => \Input::get('view') ?: '',
'tstamp' => time(),
))
->execute();
Jetzt müssen wir nur noch alle RS-Columns-Inhaltselemente in dem F Modul löschen.
subColumns Patch:
Wir öffnen die tl_content.php Datei im system/modules/Subcolumns/dca/ Verzeichnis. Jetzt müssen wir die tl_content an einigen stellen anpassen.
Wir suchen die createColset Funktion und fügen gleich nach der $arrSet Variable folgenden Code-Block ein:
if(in_array('fmodule',$this->Config->getActiveModules())) {
$arrSet['fview'] = $this->Input->get('view');
}
Danach suchen wir in der selben Funktion folgenden Kommentar:
/* Mehr Spalten */
In diesem IF-Statement suchen wir wieder die $arrSet Variable und fügen wieder danach folgenden Code-Block:
if(in_array('fmodule',$this->Config->getActiveModules())) {
$arrSet['fview'] = $this->Input->get('view');
}
Damit wäre subColumns gepatched.
Hilfe! Bei RockSolid Columns kommt immer noch eine Fehlermeldung.
Gehen Sie ins Backend zu den Inhaltselemente wo der Fehler auftaucht und überprüfen Sie noch ein Mal ob alle RS-Columns-Inhaltselemente gelöscht sind. Bitte löschen Sie alle Elemente, wenn es welche gibt. Kommt der Fehler immer noch? Schauen Sie in Ihre URL (im Backend) und suchen Sie nach view Parameter. Anschließend entfernen Sie bitte den darin enthaltenen Wert und laden Sie die Seite neu. Danach sollten ein oder mehrere RS-Columns Elemente auftauchen. Diese können Sie löschen. Jetzt sollte es funktionieren.