Zum Inhalt springen

Probleme mit IProcFunc

Erstellt am 15. Mai 2008 · 2 Antworten · letzte Antwort am 16. Mai 2008

Tags: Frage

susanne ·

Hallo zusammen,

ich möchte in meinem Menu gewisse Änderungen an den Einträgen der zweiten Ebene vornehmen. Dazu habe ich IProcFunc benutzt.

Template

//---------------------------------
// LEFTMENU
//---------------------------------
page.includeLibs.user_functions = typo3conf/ext/vip_util/class.vip_user_functions.php
page.10.marks.LEFTMENU = HMENU
page.10.marks.LEFTMENU{
      entryLevel = 2
     
  
      // 1.Menuebene = Textmenu 
      1 = TMENU
      1{
        wrap = <ul>| </ul>
        noBlur = 1

        //Normalfall
		NO.wrapItemAndSub = <li>|</li>
		NO.stdWrap.field =  title
        
        // Mit Unterpunkten
        IFSUB = 1
        IFSUB.wrapItemAndSub = <li>|</li>
        IFSUB.stdWrap.field =  title
		IFSUB.ATagParams = class="with_subs"

	ACT = 1
        ACT.wrapItemAndSub = <li>|</li>
		ACT.ATagParams = class="with_subs_open"
		
        // Angewählt
        CUR = 1
        CUR.wrapItemAndSub = <li>|</li>
        CUR.ATagParams = class="active"
        CUR.stdWrap.field =  title

        CURIFSUB = 1
        CURIFSUB.wrapItemAndSub = <li>|</li>
		CURIFSUB.ATagParams = class="with_subs_open_active"		
		CURIFSUB.stdWrap.field =  title
        
      }
      
      // 2.Menuebene = Textmenu 
      2 = TMENU
      2{
      
      IProcFunc = user_functions->getMenuClass
        wrap = <ul>|</ul>
        NO = 1
        NO.linkWrap = <li>|</li>
        NO.stdWrap.field =  title
        noBlur = 1

        // CUR aktivieren
        CUR = 1
        CUR.linkWrap = <li>|</li>
        CUR.stdWrap.field =  title
        CUR.ATagParams = class="active"
      }  
      
            // 2.Menuebene = Textmenu 
      3 = TMENU
      3{
        expAll = 1
        wrap = <ul>|</ul>
        NO = 1
        NO.linkWrap = <li>|</li>
        NO.stdWrap.field =  title
        noBlur = 1

      }        
    
}// Ende LEFTMENU

Die zugehörige Funktion sieht so aus:

	function getMenuClass($menuArray,$conf){
		$res =
		$GLOBALS['TYPO3_DB']->exec_SELECTquery(
					'tx_vippages_todo_page',
			        'pages',
					'uid='.$menuArray['uid'].' and tx_vippages_todo_page=1'
		);

		if ($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))	{
			$menuArray['val']['ATagParams'] ='class="todo"';
		}else{
			$menuArray['val']['ATagParams'] ='class="nottodo"';
		}

		print_r($menuArray);
		return $menuArray;

	}

Die Debug-Ausgabe zeigt mir auch, dass die entsprechenden Änderungen am $menuArray durchgeführt worden sind.

Aber leider ändert sich am Menu nichts. Ich hatte den Eintrag in TS-Ref so verstanden, dass die Änderungen zurückgegeben werden. Aber ich scheine wohl etwas vergessen zu haben. Ich hoffe es einer von Euch hat eine Idee.

Tschau Susanne

Unbekannter Benutzer ·

Hi,

versuch das ganze mal so zusammen zu bauen:

if ($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))   {
    $menuArray['parts']['ATag_begin'] = '<a href="'.$menuArray['linkHREF']['HREF'].'" title="'.$menuArray['title'].'"  class="todo">';
}
...

😃

susanne ·

Hallo friction48,

vielen Dank. Nun klappt es. Das war wohl das, was mir der Satz

Vor dem Aufruf dieser Funktion wird das Menüelement durch implode()ierung des Arrays $I[parts] im weitergegebenen Array. Daher können Sie dies verändern, wenn Sie wollen.

in der TSRef sagen sollte. Aber ich finde, dass dieser so seltsam formuliert ist, dass man nur schwer dahinter kommt.

Nun klappt es auf jeden Fall.

Tschau Susanne