[TYPO3-UG Oesterreich] tt_news catmenu als select
Stephan Petzl
spetzl at gmx.at
Tue Sep 16 13:52:35 CEST 2008
> 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...
More information about the TYPO3-at
mailing list