Ich denke in Planung ist da nichts weiter.
Allerdings ist da zum Erweitern nicht soo viel PHP-Kenntnis von Nöten.
Kurz gesagt, lege dir einen Ordner unter system/modules an (z. Bsp. 'zDoctypes' > der z-Präfix garantiert die Ausführung am Ende des Modul-Ladevorgangs) und darin den Ordner 'dca' mit der Datei 'tl_layout.php'.
(Datei > system/modules/zDoctypes/dca/tl_layout.php)
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_DCA']['tl_layout']['fields']['doctype']['options'] = array('xhtml_strict', 'xhtml_trans', 'xhtml_basic', 'xhtml_mp');
?>
'xhtml_strict' und 'xhtml_trans' sind die beizubehaltenden Contao-Voreinstellungen.
Damit das ganze auch sprachlich funktioniert, muss die Sprachdatei, im Beispiel für Deutsch angelegt werden:
(Datei > system/modules/zDoctypes/languages/de/tl_layout.php)
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
/* Kopie der übersetzten Voreinstellungen */
// $GLOBALS['TL_LANG']['tl_layout']['xhtml_strict'] = 'XHTML Strict';
// $GLOBALS['TL_LANG']['tl_layout']['xhtml_trans'] = 'XHTML Transitional';
/* Ergänzend dazu die eigenen Übersetzungen */
$GLOBALS['TL_LANG']['tl_layout']['xhtml_basic'] = 'XHTML Basic';
$GLOBALS['TL_LANG']['tl_layout']['xhtml_mp'] = 'XHTML MP 1.2';
?>
Jetzt dürfte die Auswahl der Doctype zur Verfügung stehen. Allerdings wird der entsprechende Doctype-String in der PageRegular.php in der Methode createTemplate in einem Switch für das Template erzeugt. Dafür lässt sich der generatePage-Hook verwenden.
Um den Hook zu registrieren muss in der Erweiterung eine config.php angelegt werden.
(Datei > system/modules/zDoctypes/config/config.php)
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_HOOKS']['generatePage'][] = array('zDoctypes', 'generateDoctypes');
?>
Jetzt brauchst du noch zu guter Letzt die Klasse zum Hook
(Datei > system/modules/zDoctypes/zDoctypes.php)
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class zDoctypes extends PageRegular {
public function generateDoctypes(Database_Result $objPage, Database_Result $objLayout, PageRegular $objPageRegular) {
// DTD
switch ($objLayout->doctype) {
case 'xhtml_strict':
$objPageRegular->Template->doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' . "\n";
break;
case 'xhtml_trans':
$objPageRegular->Template->doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . "\n";
break;
case 'xhtml_basic':
$objPageRegular->Template->doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">' . "\n";
break;
case 'xhtml_mp':
$objPageRegular->Template->doctype = '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">' . "\n";
break;
}
}
}
?>
So könnte es gehen, habe es nicht getestet.
Mehr zu HOOKs unter Contao, insbesondere generatePage.
Viel Spass
Lesezeichen