[TYPO3-UG Dutch] constante frontendtemplate uitlezen in backend extensie
Ronald Wopereis
woepwoep at gmail.com
Thu Jul 22 21:37:35 CEST 2010
Jigal, geweldig dit ! thx !
ben bezig met Ron Hall's TV_FrameWork te onderzoeken.
Muriel, wellicht kun je via http://templavoila.busynoggin.com/ wat
gemakkelijker kennismaken met TV
R
Op 22 juli 2010 17:34 schreef Jigal van Hemert <jigal at xs4all.nl> het
volgende:
> Hoi,
>
> Muriel le Pair wrote:
>
>> Op 21-7-2010 14:24, Frans van der Veen[netcreators] schreef:
>>
>>> Muriel le Pair wrote:
>>>
>>>> Hoe lees ik een constante van de frontend template uit in een backend
>>>> extensie?
>>>>
>>> Wat ik wil is eigenlijk vrij simpel. In een CMS komen meerdere websites
>> te staan met een template switch (backend extension) waarbij men zelf de
>> gewenste template kan selecteren. De templates voor root 1 zijn anders dan
>> voor root 2. dus ik wil graag dat men bij elke site alleen de templates kan
>> selecteren voor die specifieke site.
>>
>
> In het eerste voorbeeld wat je stuurde:
> >>> class tx_mijnextensie_pi1 extends tslib_pibase {
> zet je iedereen op het verkeerde been doordat je tslib_pibase gebruikt. Dit
> is vrij specifiek voor FE plugins.
>
> Als je de kickstarter een BE module laat maken (gebaseerd op t3lib_SCbase,
> dan zul je zien dat daarin de gekozen pagina in de pagetree als $this->id
> beschikbaar wordt gesteld.
>
> Ik vermoed echter dat je een uitbreiding van de page properties wilt
> bouwen. Je zou eens in TemplaVoilà kunnen kijken hoe die dat gebouwd hebben.
>
> Zo is het veld toegevoegd via (aantal configuratie-items weggelaten omwille
> van de ruimte):
> 'tx_templavoila_ds' => array (
> 'config' => array (
> 'type' => 'select',
> 'items' => Array (
> array('',0),
> ),
> 'allowNonIdValues' => 1,
> 'itemsProcFunc' =>
> 'tx_templavoila_handleStaticdatastructures->dataSourceItemsProcFunc',
> )
> ),
>
> Een select-box met een functie in
> class.tx_templavoila_handlestaticdatasctructures.php :
>
> public function dataSourceItemsProcFunc(array &$params, t3lib_TCEforms&
> $pObj) {
> $storagePid = $this->getStoragePid($params, $pObj);
> (...)
>
> He, interessant; de functie begint met het zoeken naar de storage Pid en
> die is in TSConfig gedefinieerd!
> De parameters $params en $pObj worden door TYPO3 meegestuurd en die
> bevatten de sleutel tot het vinden van de "huidige" pagina, etc.
>
> protected function getStoragePid(array &$params, t3lib_TCEforms &$pObj) {
> // Get default first
> $tsConfig =
> &$pObj->cachedTSconfig[$params['table'].':'.$params['row']['uid']];
> $storagePid = intval($tsConfig['_STORAGE_PID']);
> // Check for alternative storage folder
> $field = $params['table'] == 'pages' ? 'uid' : 'pid';
> $modTSConfig = t3lib_BEfunc::getModTSconfig($params['row'][$field],
> 'tx_templavoila.storagePid');
> if (is_array($modTSConfig) &&
> t3lib_div::testInt($modTSConfig['value'])) {
> $storagePid = intval($modTSConfig['value']);
> }
> return $storagePid;
> }
>
> Deze functie laat goed zien hoe je een waarde uit TSConfig kunt uitlezen.
> Dit is vergelijkbaar met Typoscript voor de FE; alle TSConfig instellingen
> worden vanaf de root t/m de opgevraagde pagina verzameld en daaruit wordt de
> waarde gelezen.
>
> Het lijkt me dan ook verstandig om niet een Typoscript constante te gaan
> gebruiken, maar een TSConfig waarde (simpelweg in de page properties in te
> stellen). Naar gelang die waarde kun je dan de beschikbare templates
> presenteren voor selectie in een extra veld in de page properties.
>
> --
> Jigal van Hemert.
>
> _______________________________________________
> TYPO3-UG-Dutch mailing list
> TYPO3-UG-Dutch at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-dutch
>
--
Come and join me on Ecademy Club "Follow Me - learn how to become the Warren
Buffet of the Atttention Economy"
http://www.ecademy.com/account.php?op=signup&c=5591&xref=69061
More information about the TYPO3-UG-Dutch
mailing list