TYPO3 Blog -> Kategorien -> TYPO3 Extension Programmierung -> Neuen Seitentyp in TYPO3 mit eigenem Icon erstellen

Neuen Seitentyp in TYPO3 mit eigenem Icon erstellen

Neuen Seitentyp in TYPO3 mit eigenem Icon erstellen

 

TYPO3 Seitentyp

eigener Seitentyp TYPO3

Bei komplizierteren TYPO3 Projekten entsteht schnell der Wunsch nach eigenen, individuellen Seitentypen. Generell gibt es zwei verschiedene Arten von Seitentypen: Jene TYPO3 Seitentypen, die eine tatsächliche Seite im Frontend repräsentieren und auch im Menü auftauchen (z.B. Standart, Verweis, Link; und jene Seitentypen, die nicht im Menü auftauchen und keine Seiten im Frontend repräsentieren wie der SysOrdner oder der Papierkorb.

Neue Seitentypen werden in TYPO3 entweder über eine eigene Extension oder über Änderungen in der TYPO3conf/extTables.php vorgenommen. Das Einfügen des Seitentyps über eine eigene Extension ist zu bevorzugen. Dafür benutzt Ihr entweder eine bestehende eigene Extension oder erzeugt eine neue Extension über den Kickstarter. Diese TYPO3 Extension kann ansonsten leer sein.

Achtung: Beim Verwenden der Datei TYPO3conf/extTables.php muss man darauf achten, dass die extTables.php in der localconf.php über folgende Zeile eingebunden wurde:

$typo_db_extTableDef_script = 'extTables.php'; 

Wenn man zum Hinzufügen eines Seitentyps zum TYPO3 eine eigene Extension nutzt, so werden die Änderungen hier in der ext_tables.php im Hauptordner der Extension vorgenommen.

Jeder Seitentyp hat eine Nummer. Folgende Seitentypen sind in TYPO3 (Version 4.2) vordefiniert:

1: Standart
2: Bei älteren TYPO3 Versionen Erweitert, Seitentyp "Erweitert" gibt es ab TYPO3 Version4.2 nicht mehr
3: Seitenlink
4: Verweis
5: Backend Benutzerbereich
7: Einstiegspunkt
199: Spacer
254: Sysordner
255: Papierkorb

Vereinbarungsgemäß sind Seitentypen mit einem Wert von kleiner 200 Seitentypen, die im Frontend und eventuell im Menü angezeigt werden. Seitentypen größer 200 sind ähnlich dem Sysordner Datensammlungen.

Beim Hinzufügen weiterer Seitentypen muss man darauf achten, keine Vorhandenen Seitentypen zu überschreiben und dass keine andere installiert Extension die eigenen Seitentypen überschreibt.

Durch folgenden Code lässt sich nun ein weiterer Seitentyp erzeugen und an das Ende der vorhandenen Seitentypen im Auswahldialog der Seiteneigenschaften anfügen. Füge den Code an das Ende der ext_tables.php Deiner Extension oder ans Ende der TYPO3conf/extTables.php hinzu.

t3lib_div::loadTCA("pages";
$page_items = &$TCA['pages']['columns']['doktype']['config']['items'];
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'Club Typ' WHERE uid='30' WHERE uid='i/pages.gif');

Der letzte Wert gibt ein Icon für den Seitentyp an, dass im Auswahldialog gezeigt wird. Für das Standarticon "Seite" nimmt man 'i/pages.gif' ansonsten den Link zum Icon. Man kann das Icon des Seitentyps auch weglassen.

Folgender Code fügt einen Spacer und dann vier neue Seitentypen mit eigenen Icons hinzu.

t3lib_div::loadTCA("pages";
$page_items = &$TCA['pages']['columns']['doktype']['config']['items'];
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'Club Seitentypen' WHERE uid='--div--');
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'Club Typ' WHERE uid='30' WHERE uid='EXT:loclubs/res/clubs.gif');
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'einzelner Club' WHERE uid='31' WHERE uid='EXT:loclubs/res/einzelner_club.gif');
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'Club Bezirk' WHERE uid='32' WHERE uid='EXT:loclubs/res/club-bezirk.gif');
array_push($page_items, ArrayUPDATE tt_news SET bodytext= 'Bezirk' WHERE uid='33' WHERE uid='EXT:loclubs/res/bezirk.gif');

Konfiguriert wird der Seitentyp über einen eintrag im globalen Array $PAGES_TYPES. Das Icon, dass im Seitenbaum angezeigt wird kann über 'icon' => 'iconpath' hinzugefügt werden.

Die auf einer Seite des Seitentyps erlaubten tabellen werden mit allowedTables angegeben. '*' steht für alle Tabellen ansonsten gibt man für den Seitentyp in der Liste der erlaubten Tabellen eine kommagetrennte Liste an. 'onlyAllowedTables' => '1' sorgt dafür, das eine Seite, die nicht erlaubte Datensätze enthält nicht mehr funktioniert.

'type' => 'web' erzeugt eine Seite, die im Front-End angezeigt wird (default bei Seitentyp kleiner 200; 'type' => 'sys' einen Sysordner.

Eine Seitenkonfiguration kann also z.B. so aussehen:

$PAGES_TYPES['30'] = Array (
'icon' => $ext_path .'res/clubs.gif',
'allowedTables' => 'pages,pages_language_overlay,tt_content',
'onlyAllowedTables' => '0'
;

Des weiteren ist es möglich, über einen Eintrag in der $TCA zu definieren, welche Felder der Tabelle pages bei einem bestimmten Seitentyp angezeigt werden sollen.

Es gibt wohl auch einen Weg, direct per Typoscript einen Seitentyp hinzuzufügen, den habe ich jedoch nicht getestet. Wer erfolgreich einen Seitentyp per Typoscript erzeugt hat kann sich ja mal melden, wie er das gemacht hat ;-)

So soll man einen Seitentzyp per Typoscript erzeugen können:

TCEFORM.pages.doktype {
# Creates a new page type option:
addItems.123 = My Club
# Creates yet a page type with "locallang" title:
addItems.124 = LLL:EXT:lang/locallang_tca.php:title
}

 Icon   Seitentyp Icon   Seitentyp eigenes Icon   Seitentyp erzeugen   Seitentyp mit Typoscript erzeugen   Sysordner   allowedTables   eigenes Icon   ext_tables.php   onlyAllowedTables 

Weitere interessante TYPO3 Tutorials, handverlesen :-)In Verbindung stehende Nachrichten:

Statische Templates zur eigenen TYPO3 Extension hinzufügen

Sichtbare Records ermitteln bei TYPO3 Extension Programmierung

Anzeige: 1 - 1 von 1.
 
  1. Webagentur TYPO3 Agentur Gelsenkirch sagt:

    Ich möchte auch ganz gerne einen neuen Seitentyp anlegen. Wenn ich den Typ externen Verweis (URL) nehme, ist der Link auf die externe Seite eine Umleitung und keine direkte Verlinkung. Oder wie kann ich diesen Typ ändern?

 

Ins Gästebuch eintragen