Hallo,
heute habe ich mal einen Verbesserungsvorschlag, der sich sicher leicht im Contao core umsetzen ließe:
Ausgangssituation:
Wenn man ein Modul erweitert, z.B. das news-Modul, so kann man das Backend-Modul wunderbar dadurch erweitern, indem man die DCA ändert und wenn man seinen Modulordner so benennt, dass er im Alphabet später kommt, also z.B. "z_news".
Um die Änderungen im Frontend-Modul wiederzugeben, geht das ebenso.
ABER um das Template zu überschreiben uns z.B. neuen Optionen Rechnung zu tragen, muss man entweder für das Modul ein spezielles Template anlegen und auswählen, z.B. news_short_extended, news_full_extended, usw.
Oder man überschreibt die Templates im globalen templates/ Ordner. Dort heißen sie dann wieder news_short und news_full.
Problem:
Leider kann man nicht das Template erweitern bzw. überschreiben, indem man in sein Modulverzeichnis im Templates-Unterordner Templates mit den gleichen Namen anlegt, also z.B. /system/modules/z_news/templates/news_short.tpl
Die mögliche Lösung:
Das Problem liegt daran, dass die Methode getTemplate() in /system/libraries/Controller.php im foreach loop ab Zeile 99 ff. die Modulordner alphabetisch durchgeht und mit return sofort das erste gefundene Template zurückgibt.
Besser wäre es, an dieser Stelle die Module entgegen dem Alphabet durchzugehen.
Was meint ihr dazu?PHP-Code:
// Browse all module folders
// foreach ($this->Config->getActiveModules() as $strModule) // VORHER
foreach (array_reverse($this->Config->getActiveModules(), true) as $strModule) // BESSER?
{
$strFile = TL_ROOT . '/system/modules/' . $strModule . '/templates/' . $strTemplate . '.tpl';
if (file_exists($strFile))
{
return $strFile;
}
}
Gruß,
Matthias
Lesezeichen