Typoscript einer Seite aus BE-Modul auslesen

Oft benötigt man Angaben, die im Typoscript eines Templates stehen. Nun wird dieses Template ja im FE gerendert. Was also tun, wenn man das Typoscript im BE-Modul braucht, um z.B. eine Einstellung auszulesen ?

Dafür kann man folgende Funktion benutzen, die einem Das Typoscript einer Seite zurückliefert. Als Parameter wird die ID der Seite erwartet.

PHP
function loadTS($pageUid) {
        $sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect');
        $rootLine = $sysPageObj->getRootLine($pageUid);
        $TSObj = t3lib_div::makeInstance('t3lib_tsparser_ext');
        $TSObj->tt_track = 0;
        $TSObj->init();
        $TSObj->runThroughTemplates($rootLine);
        $TSObj->generateConfig();
        return $TSObj->setup;
}
14 Kommentare
#14 Felix Nagel schrieb am 09.08.2010 13:02
#12 fotohorst schrieb am 30.04.2009 11:50

Finde die Lösungen hier im Ansatz nicht verkehrt aber eigentlich viel zu umständlich ... wie wäre es mit knappen 3 Zeilen PHP Code:

www.marko-roeper.de/typo-3/wissenswertes.html

#13 mamuesp schrieb am 08.07.2009 12:41

Ganz einfach: gesucht wurde das TS-Setup einer Seite, nicht das TSConfig ...

#10 Boris Degenhardt schrieb am 03.12.2008 16:17

Fatal error: t3lib_div::require_once() [function.require]: Failed opening required '/home/www/XXXX/html/t3lib/class.t3lib_pageselect.php' (include_path='.:/usr/local/php/lib/php:/usr/local/php/lib/php/PEAR') in /typo3_src-4.1.7/t3lib/class.t3lib_div.php on line 4145

 

Was muss ich wo includieren?

 

Gruss

Boris

#11 steffen schrieb am 03.12.2008 22:04

require_once (PATH_t3lib . 'class.t3lib_page.php');

#8 Fabian K. schrieb am 13.11.2008 13:52

Hoi,

 

in den Kommentaren gibt es einen kleinen Fehler bzgl. Auslesen von Plugin-TypoScript Confused

 

Nochmal zur korrekten Klärung nach dem obenstehenden Prinzip:

Wenn wir z.B. die Templatedatei der tt_news auslesen wollen (plugin.tt_news.file.templateFile = foo.html), funktioniert das Ganze wie folgt:

 

$typoscript = loadTS($GLOBALS['TSFE']->id);

$templatedatei = $typoscript['plugin.']['tt_news.']['file.']['templateFile']

 

Ein

echo $templatedatei;

liefert dann also "foo.html".

 

Natürlich kann man über diesen weg auch selbsterstellte tt_news-Optionen auslesen.

 

Beispiel:

plugin.tt_news.file.LoremIpsum = 123

 

 

Das Ganze funktioniert natürlich nicht nur in BE-Modulen, sondern auch in Frontend-Modulen, z.B. wenn man (wie in meinem Fall) die tt_news mit neuen Markern erweitert und spezielle (evtl. selbst erstellte) tt_news-Optionen (-> plugin.tt_news.file.LoremIpsum) dafür auslesen will/muss.

 

 

hth - fabian

#5 walk2moon schrieb am 26.08.2008 09:14

Hallo Steffen,

 

vielen dank für den Tipp! zwinker Hab ich jetzt schon einige Zeit nach einer solchen Möglichkeit gesucht.

 

Nachdem ich nun das TS meiner rootpage auslesen konnte, habe ich noch das Problem, dass ich nicht genau weiß, wie ich dann auf die Variable in diesem Array zugreifen kann. Ich habe da drin stehen: [tx_extkey_modul1.] => Array ( [text] => halloWelt ).

 

Wie komme ich da jetzt in meiner Klasse dran? Grüße und nochmals vielen Dank

#6 steffen schrieb am 26.08.2008 09:52

Hi,

 

so:

$ts = $this->loadTS(1);

$text = $ts['tx_extkey_modul1.']['text'];

#7 walk2moon schrieb am 26.08.2008 10:55

Danke für die schnelle Antwort.

 

Ich habe deinen Ansatz versucht. Bekomme aber bei einer Ausgabe von $text kein halloWelt ausgegeben. Das TS steht im setup und sieht so aus:

 

plugin.tx_extkey_modul1 {

text = halloWelt

}

 

Muss da noch was in die Constants?

#9 Fabian K. schrieb am 13.11.2008 15:08

$ts = $this->loadTS(1);

$text = $ts['plugin.']['tx_extkey_modul1.']['text'];

#3 Joern schrieb am 13.02.2008 17:27

Hallo,

 

ich habe biede Methoden versucht, nur leider kommt folgende Fehlermeldung:

 

typo3/t3lib/class.t3lib_pageselect.php) [function.t3lib-div-require-once]: failed to open stream: No such file or directory

 

DIe Datei ist nicht da, muss da noch irgendwas zusätzlich installiert werden?

 

Viele Grüße,

 

Jörn

#4 steffen schrieb am 13.02.2008 18:12

die Klasse ist in dieser Datei, die inkludiert werden muss:

t3lib/class.t3lib_page.php

#1 M.Stübner schrieb am 17.04.2007 18:12

Ist das nicht einfach als:

 

$pS = t3lib_div::makeInstance('t3lib_pageSelect');

tslib_fe::includeTCA();

$tmlp = t3lib_div::makeInstance('t3lib_TStemplate');

$tmlp->init();

$tmlp->start($pS->getRootline(intval($_GET['pid'])));

$var = $tmlp->setup['plugin.']['tx_name_pi1.'][‘varpath.'][‘var'];

#2 steffen schrieb am 14.05.2007 19:07

durchaus smile im Laufe der Zeit schafft man es immer besser zu vereinfachen zwinker

einen Kommentar schreiben
Typo3