Menü erstellen mit Daten aus anderen Tabellen als pages V2

Submitting your vote...
Rating: 4.8 of 5. 12 vote(s).
Click the rating bar to rate this item.

Hier ist eine verbesserte version des PHP Scripts und ein neues Typoscript beispiel, welches das PHP Script so konfiguriert, das eine GET Variable verwendet wird um eine "Seite" aktiv (ACT) zu setzen.

 

Im Typoscript für diese userFrunc kann man 2 neue parameter setzen:

 

obj.header.special.userFunc.actextkey = tx_ablinklist_pi1

 

Diese einstellung setzt den Extension key von dem die entsprechnde GET Variable für den ACT status kommt.

Und:

 

obj.header.special.userFunc.actextvar = category_uid

 

Setzt den namen der GET Variable in der Extension ( in diesem falle alles zusammen: tx_ablinklist_pi1[tx_ablinklist_pi1])

 

 


Die neue PHP class/function (Speichern unter "fileadmin/menuFunc2.inc")
-- cut --
<?php

class user_menuFunc {

function 
makeMenuArray($content,$conf) {
$menuArr = array();
$lConf $conf["userFunc."];
$actuid 0;
if (
$lConf['actextkey'] && $lConf['actextvar']) {
$getval t3lib_div::_GET();
$actuid $getval[$lConf['actextkey']][$lConf['actextvar']];
}
$res $this->cObj->exec_getQuery($lConf["table"],$lConf["select."]);
if (
$error $GLOBALS['TYPO3_DB']->sql_error()) {
$GLOBALS['TT']->setTSlogMessage($error,3);
}
else {
$GLOBALS['TT']->setTSlogMessage('NUMROWS:'.$GLOBALS['TYPO3_DB']->sql_num_rows($res));
while (
$row $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
if (
$actuid!=&& $actuid==$row['uid']) $row['ITEM_STATE']='ACT';
$menuArr[] = $row;
}
}
return 
$menuArr;
}

}

?>
-- cut --

 

 

Das neue Typoscript Beispiel:

 

-- cut --
page.includeLibs.menustuff = fileadmin/menuFunc2.inc

obj.header = HMENU
obj.header.special = userfunction
obj.header.special.userFunc = user_menuFunc->makeMenuArray
# Die Tabelle setzen aus der man das Menü generieren möchte
# In diesem Beispiel word die Modern Linklist (ab_linklist) extension verwendet.
obj.header.special.userFunc.table = tx_ablinklist_category

# uid der Seite wo diese Records gespeichert sind
obj.header.special.userFunc.select.pidInList = 91
#den Extension key von dem die entsprechnde GET Variable für den ACT status kommt.
obj.header.special.userFunc.actextkey = tx_ablinklist_pi1
#Setzt den namen der GET Variable in der Extension ( in diesem falle alles zusammen:  tx_ablinklist_pi1[tx_ablinklist_pi1])
obj.header.special.userFunc.actextvar = category_uid
obj.header.1 = TMENU
obj.header.1 {
  NO {
    doNotLinkIt = 1
    stdWrap.field = label
    stdWrap.typolink.useCacheHash = 1
    stdWrap.typolink.parameter.data = page:uid
    stdWrap.typolink.additionalParams.dataWrap = &tx_ablinklist_pi1[category_uid]={field:uid}
    #stdWrap.data = debug:data
    allWrap = |<br>
  }
  ACT < .NO
  ACT = 1
  ACT.allWrap = <b>|</b><br>
}

page.7911 < obj.header
-- cut --

 

Dieses Snippet wurde von Peter Klein eingesendet



Comments


Mike, 05-02-08 21:35:
Hallo, ist es mit diesem Script auch möglich, in ein bestehendes Menü, auf Level2 eine weitere Menü-Ebene einzufügen. Oder gibt es irgendeinen Ansatz dafür, wie ich das lösen könnte?
daniel, 18-10-08 13:03:
würde ich auch gerne wissen!
Tobias, 07-07-09 17:16:
Ja, ist möglich, habe es bei mir laufen, einfach im bestehenden Menü das after-objekt benutzen, siehe mein beispiel welches für den aktuell ausgewählten Menüpunkt das Untermenü speziell erweitert.

CUR {
after.cObject = HMENU
after.cObject < temp.extmenu
}
Timo, 01-05-10 14:05:
Für weitere Ebenen muss unter $menuArr[] = $row folgenes eingefügt werden:

$conf["userFunc."]["select."]["pidInList"]= $row["uid"];
if ($submenu = $this->makeMenuArray($content,$conf)) {
$menuArr[count($menuArr)-1][_SUB_MENU][] = $submenu[0];
}

Dann ist ein Zugriff über 2 < .1 möglich. Da das $menuItemsArray über das interne Feld "_SUB_MENU" erweitert wird.
Timo, 01-05-10 14:11:
Für weitere Ebenen muss unter $menuArr[] = $row folgenes eingefügt werden:

$conf["userFunc."]["select."]["pidInList"]= $row["uid"];
if ($submenu = $this->makeMenuArray($content,$conf)) {
$menuArr[count($menuArr)-1][_SUB_MENU] = $submenu;
}

Dann ist ein Zugriff über 2 < .1 und 3 < .1 ff. möglich. Da das $menuItemsArray über das interne Feld "_SUB_MENU" erweitert wird.

Read more: http://www.typo3wizard.com/de/snippets/menus/menues-erstellen-mit-daten-aus-anderen-tabellen-als-pages-v2.html#ixzz0mgAGyhod
Under Creative Commons License: Attribution
rene, 06-04-11 14:39:
bei mir wird unter TYPO3 4.5.2 irgendwie der ACT Status falsch gesetzt... einmal der richtige aktive menüpunkt und einmal immer der erste menüpunkt ???
Jemand eine idee wo es da haken könnte ???

Add comment

* - required field

*



*
*

Top 10 Updates

Login geändert am  09-Sep-2010 11:31:35
Schöne Schriften mit Google Font API geändert am  20-May-2010 16:36:59
TS basierte Searchbox für Indexed Search geändert am  18-May-2010 18:26:54
TYPO3 SEO geändert am  30-Apr-2010 09:43:20
Suchmaschinenfreundliche grafische Überschriften in TYPO3 geändert am  30-Apr-2010 09:33:56
Erstellen eines einfachen Infocenters mit TYPO3  geändert am  17-Nov-2009 12:11:22
Funktionierendes Section Menu mit TemplaVoila geändert am  05-May-2009 12:42:40
"Nicht im Menü" in Sitemap anzeigen geändert am  05-May-2009 12:12:24
Implementation des DHTML Menüs von brainjar.com  geändert am  01-Feb-2009 14:01:36
Beispiel DHTML Menü geändert am  01-Feb-2009 13:47:38

Latest comments

18-Jan-2012 11:03:20
cjjgeb cjjgeb schrieb: qUWC8M <a href="http://yviwfgyvopxz.com/">yviwfgyvopxz</a>
Typolink
18-Jan-2012 05:39:25
Melia Melia schrieb: Stands back from the kybeoard in amazement! Thanks!
Typolink
02-Jan-2012 22:48:33
Dietmar schrieb: Doch, genau das soll es doch sein. Sonst könntest Du ja die Seiten in der Vorschau nicht...
Eigenes vhost für das TYPO3 Backend
English
Suche: