[TYPO3-UG Oesterreich] tt_news catmenu als select
Peter Loeffler
plo at sailing-online.info
Wed Sep 17 11:25:40 CEST 2008
hi stefan
erstmal: VIELEN DANK! gibt ganz neue einblicke, wie das alles so
zusammenhängt
trotzdem: irgendwo hat sich der kleine fehlerteufel eingeschlichen: hab
2 categorien (mit unterkat.) ausgewählt, und enau die werden NICHT
dargestellt, sondern nur eine cat, die eigentlich garnicht dargestellt
wird...
(...oder war/bin ich da zu blöd?)
lg
peter
Stephan Petzl schrieb:
>> Es besteht auch die möglichkeit das menü gänzlich in php zu machen und
>> das dann per hook einzubinden. damit hat man dann natürlich am wenigsten
>> einschränkungen. falls du daran interessiert sein solltest kann ich dir
>> hier weiterhelfen..
>>
>
>
> erstelle zuerst eine extension im kickstarter.
> dann speichere und installiere die extension.
> dann erstelle (wenn noch nicht vorhanden) eine ext_localconf.php im root
> deiner extension.
> für folgendes in der ext_localconf.php ein:
> <?php
> $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['userDisplayCatmenuHook'][]
> =
> t3lib_extMgm::extPath($_EXTKEY).'hooks/class.tx_tt_news_categorymenu_hook.php:&tx_tt_news_categorymenu_hook';
> ?>
>
> erstelle eine datei hooks/class.tx_tt_news_categorymenu_hook.php und
> folgendes einfügen:
>
> <?php
> /**
> * @property t3lib_DB $db
> * @property t3lib_tsfeBeUserAuth $tsfe;
> */
> class tx_tt_news_categorymenu_hook{
>
> public function init($conf,&$ref){
>
> global $TYPO3_DB,$TSFE;
> $this->db = $TYPO3_DB;
> $this->tsfe = $TSFE;
> $this->ref = $ref;
> $this->conf = $conf;
>
> }
> public function userDisplayCatmenu(&$conf, &$ref){
> $this->init($conf,$ref);
>
> if($ref->conf['displayCatMenu.']['mode'] == 'xyn_ext') {
> $rows = $this->db->exec_SELECTgetRows("*",
> "tt_news_cat",
> "deleted=0 AND
> hidden=0",
> "",
> "parent_category
> ASC,title ASC"
> );
>
> $html = $this->addSubCategoriesRec($rows,0);
> return $html;
> }
> }
> // recursively adds childs of the category record with uid "&cat_uid"
> private function addSubCategoriesRec(&$rows, $cat_uid){
>
> $html = "";
> $i=0;
> $pid = $this->conf['displayCatMenu.']['targetPid'];
> if(!$pid)
> $pid = $this->tsfe->id;
> foreach($rows as $row){
> if($row['parent_category'] == $cat_uid){
> $title = htmlspecialchars($row['title']);
> $urlParams = array('tx_ttnews[cat]' => $row['uid']);
> //$aTagParams .= ' title="'.$row['descrition'].'"';
> $conf = array(
> 'useCacheHash' => $this->conf['allowCaching'],
> 'no_cache' => !$this->conf['allowCaching'],
> 'parameter' => $pid,
> 'additionalParams' =>
> $this->conf['parent.']['addParams'].t3lib_div::implodeArrayForUrl('',$urlParams,'',1).$this->pi_moreParams,
> //'ATagParams' => $aTagParams
> );
>
> $link = $this->ref->cObj->typoLink($title, $conf);
> $href =
> $this->ref->pi_getPageLink($pid,'',array('tx_ttnews[cat]'=>$row['uid']));
> $html .= '<li id="li_news_cat_'.$row['uid'].'">';
> $html .= $link;//'<a href="'.$href.'"
> alt="'.$row['title'].'">'.$row['title'].'</a>';
> //unset($rows[$i]);
> $html .= $this->addSubCategoriesRec($rows,$row['uid']);
> $html .= '</li>';
> }
> $i++;
> }
> //debug(count($rows));
> if($html)
> $html = '<ul class="tt_news_cat_'.$cat_uid.'">'.$html.'</ul>';
>
> return $html;
>
> }
> }
> ?>
>
> anschließend in deinem typoscript template folgenden parameter setzen:
> plugin.tt_news.displayCatMenu.mode = xyn_ext
>
> nun kannst du ein normales tt_news catmenu an entsprechender stelle auf
> deiner seite einfügen, das rendering übernimmt deine
> tx_tt_news_categorymenu_hook klasse. entsprechende php kenntnisse
> vorausgesetzt sollte es kein problem sein den code so anzupassen dass du
> dropdowns angezeigt bekommst...
>
>
> _______________________________________________
> TYPO3-at mailing list
> TYPO3-at at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-at
>
More information about the TYPO3-at
mailing list