Salut,
am avut recent o problema in care a trebuit sa fac un meniu custom, cu ceva logica mai complicata si a trebuit sa-l fac in extensie... nu era suficient typoscript-ul HMENU si TMENU.
In typoscript aveam o linie de genul acesta:
subparts.PAGE_SUBMENU < plugin.tx_contentmanagement_pi1
subparts.PAGE_SUBMENU.cmd = SUBMENU
Toate bune si frumoase, pana cand specificatiile s-au schimbat si clientul a vrut ca daca intr-o pagina nu exista subpagini din care sa se genereze submeniul, atunci sa apara un content pus de el in sectiunea BORDER (ceea ce in typoscript facem simplu cu styles.content.getBorder). Provocarea? Cum sa fac ca daca nu exista submeniu (simplu de verificat, desigur) sa-mi apara ce e in sectiunea BORDER... (relativ dificil as zice eu) ?
Se putea face tot din cu selecturi in tabela tt_content si cu parsari ale content-ului... etc. etc. ... dar am gasit o metoda mai simpla.
Iata codul typoscript:
subparts.PAGE_SUBMENU < plugin.tx_contentmanagement_pi1
subparts.PAGE_SUBMENU.cmd = SUBMENU
subparts.PAGE_SUBMENU.content.cObject < styles.content.getBorder
subparts.PAGE_SUBMENU.content.cObject.slide = -1
subparts.PAGE_SUBMENU.content.cObject.wrap = <div id="benefits" class="nobborder">|</div>
Iata codul php:
// if subpages exists... create the menu;
if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0) {
// aici se creaza submeniul... sar peste sectiunea asta.
} else {
// aici e partea interesanta prin care transmit la o functie core typoscriptul pus in 'content'
$content= $this->cObj->stdWrap($conf['content'],$conf['content.']);
}
Rezultatul este generarea contentului html exact asa cum s-ar genera daca ar fi pus direct, in felul acesta: subparts.PAGE_SUBMENU < styles.content.getBorder
Sper ca-i vor fi de folos cuiva codul de mai sus...