[TYPO3-german] Navigation aus Datensatzfeldern der eigenen Extension

Peter Russ peter.russ at 4many.net
Thu Dec 17 11:13:50 CET 2009


--- Original Nachricht ---
Absender:   Koller Michel
Datum:       17.12.2009 11:06:
[...]
> Im TSREF steht darüber:
> It goes like this:
> $menuItemsArray[] = pageRow1;
> mir ist hier nicht klar wie die Struktur des geforderten Arrays aussehen 
> soll der zurückgeben werden muss,
> ich vermute das "pageRow1" wieder ein Array sein soll mit den Daten des 
> Datensatzes drin?
> 
> Dann steht:
> A "pageRow" is a record from the table "pages" with all fields selected 
> (SELECT * FROM...)
> 
> Also hier aus der Tabelle "pages" in meinem falle aber aus der Tabelle der 
> Datensätze aus denen ich eine Navi machen möchte?
> 
> Dann steht noch:
> If you create fake page rows, make sure to add at least "title" and "uid" 
> field values.
> 
> ....also im Minimum das Feld Titel und uid. Da meine Navi aber immer die 
> selbe Seite aufrufen soll nur mit anderen Parametern (also der uid des 
> Datensatzes).
> 
> Ich tu mich hier echt schwer, evt kann mir jemand mitteilen wo ich den 
> Denkfehler habe
> 
> Danach sollte man im Typoscript denn Array so übergene können denke ich :
> 
> lib.contentNavi.special = userdefined
> lib.contentNavi.special.file < plugin.tx_meinplugin2_pi2

Hilft das Bespiel nun weiter:
SETUP
#PRS+ 20060527
[PIDinRootline={$plugin.tx_fdfxwekuartists_pi1.pid}]
includeLibs.wekuartists = 
EXT:fdfx_weku_artists/pi1/class.tx_fdfxwekuartists_pi1.php
temp.AtoZMenu=COA
temp.AtoZMenu{
	10=TEXT
	10{
		value=Künstlermenü
		wrap=<div style="display:none;">|</div>
	}
	20=HMENU
	20{
		special = userfunction
		special.userFunc=tx_fdfxwekuartists_pi1->makeMenuArray
		wrap=<ul class="mainNavi2">|</ul>
		1 = TMENU
		1 {
			target=_top
			NO = 1
			NO {
				allWrap=<li class="mainNavi2No mainNavi2NO-WEKU">|</li>
			}

			ACT = 1
			ACT < .NO
			ACT {
				allWrap=<li class="mainNavi2Act mainNavi2ACT-WEKU">|</li>
			}
			
			IFSUB = 1
			IFSUB < .NO
			IFSUB{
				allWrap=<li class="mainNavi2No mainNavi2SUB-WEKU">|</li>
			}
		}
	}
}
#Gegebenenfalls die beiden Zeilen in MAINsetup kopieren.
page.10.subparts.wkMainNavi2 >
page.10.subparts.wkMainNavi2 < temp.AtoZMenu
[end]
#PRS- 20060527

Und die Funktion:
	function makeMenuArray($content,$conf) {
		$lConf= $conf['userFunc.'];
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$menu= $this->makeAlphabetIndexMenuArray($GLOBALS['TSFE']->tmpl, 
$GLOBALS['TSFE']->sys_page, '', $lConf, 1);
		return $menu;
	}
	
	function makeAlphabetIndexMenuArray(& $tmpl, & $sys_page, $id= '', 
$conf= array (), $mCount= 1)
	{
		$menuArr=array();
		$retMenu= array ();
		
		if(!isset($_GET['listindex']) || empty($_GET['listindex'])) 
$listIndex='A';
		else $listIndex=$_GET['listindex'];

		/* generate alphabetical index */
		for($i=65; $i<91; $i++) {
			$params=array('listindex' => chr($i),);
		 
$cHashArray=t3lib_div::cHashParams(t3lib_div::implodeArrayForUrl('',$params));
			$params['cHash']=t3lib_div::shortMD5(serialize($cHashArray));
			$linkData=$this->pi_getPageLink($GLOBALS['TSFE']->id,'',$params);
			
			// basic menu data
			$tmpMenu=array(
				'title' => strtoupper(chr($i)),
				'subtitle' => 'K&uuml;nstlerindex '.chr($i),
				'_OVERRIDE_HREF' => $linkData,
			);

			// default item state
			if(chr($i)==$listIndex) { $subArray=array('ITEM_STATE' => 'ACT'); }
			else { $subArray=array('ITEM_STATE' => 'IFSUB'); }
			$tmpMenu=t3lib_div :: array_merge($tmpMenu, $subArray);
			unset($subArray);
			
			$menuAry[]=$tmpMenu;
			unset($tmpMenu);
		}
		// get initials of all artists
		$artistInit=array();
		$table='tx_fdfxwekuartists';
		$result=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
			'ucase(left(last_name,1)) as initial, count(last_name) as counter',
			$table,
			' 1=1 '.$this->cObj->enableFields('tx_fdfxwekuartists'),
			'initial',
			'initial'
		);
		while($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
			$artistInit[$row['initial']]=$row['counter'];
		}
		
		// no initials -> item state "no"
		if(is_array($menuAry))
		{
			reset($menuAry);
		}
		else
		{
			$menuAry=array();
		}
		foreach ($menuAry as $key => $item) {
			$initial=$item['title'];
			if(!isset($artistInit[$initial])) {
				$item['ITEM_STATE']='NO';
			}
			$retMenu[]=$item;
		}
		return $retMenu;
	}

Greets.




-- 
loans that change lives http://www.kiva.org

_____________________________
uon GbR
http://www.uon.li
http://www.xing.com/profile/Peter_Russ


More information about the TYPO3-german mailing list