Zum Inhalt springen

Submenü nur anzeigen wenn auch Elemente enthalten

Erstellt am 3. April 2006 · 13 Antworten · letzte Antwort am 4. April 2006

Tags: Frage

Unbekannter Benutzer ·

Hallo erstmal!

Also: Ich hab meine Navigation in zwei Teile aufgeteilt: Ein Horizintales für die erste Ebene (Mainmenü) und einst für die zweite bis vierte Ebene (Submenü)

Jetzt will ich aber, dass wenn das Submenü keinen Elemente enthält, dann soll es nicht angezeigt werden. wie mache ich das?

Hier ein Beispiel wie ich das meine:

[ --> Bedingung <-- ]
temp.submenu = COA
temp.submenu {
  10 = HMENU
  10.entryLevel = 1

  [...]

[ELSE]
temp.submenu = COA
temp.submenu {
  10 = HMENU
  10.wrap =
  10.1 = TMENU
  10.1.value = 
}
[END]

Tschüss Vinni10

cyberworks ·

Sag den Seiten, die nicht angeführt werden dürfen doch einfach, dass sie nicht im Menü erscheinen sollen?

Meinst du das?

Unbekannter Benutzer ·

Ich mein das anders! Das Submenü hat am Anfang und am Ende eine grafik. die werden über wrap eingefügt. jetzt sieht das aber sch**** aus wenn da keine Elemente angezeigt werden also die rootseite keine Unterseiten hat!

Ich will ja nur wissen wie ich Prüfen kann ob die erste Ebene Unterseiten enthält!

Gruß Vinni10

Unbekannter Benutzer ·

Kannst du mir mal ein Beispiel geben wie das mit zwei getrennten menüs geht?
Eigtl. müsste es doch irgendwas geben wie das geht!

[ --> Bedingung <-- ]
temp.submenu = COA
temp.submenu {
  10 = HMENU
  10.entryLevel = 1
 
  [...Gekürzt...]
 
[ELSE]
temp.submenu = COA
temp.submenu {
  10 = HMENU
  10.wrap =
  10.1 = TMENU
  10.1.value = 
}
[END]

Cu Vinni10[/quote]

just2b ·

naja ich kenn dein Menü nicht wirklich, aber vielleicht (!) kann man das Pferd eben von der anderen Richtung aufzäumen...

Bsp wäre das Menü hier http://ringer.gosaunet.at/ oder auch jedes andere...

Ebene 1 => IFSUB-Zustand verwenden....

lg georg

FalkWalter ·

Hallo, Vini,

ich hatte ein ähnliches Problem wie Du (Menü war zwar weg, wenn kein Unterverzeichnis - aber der Wrap noch da).

Habe es wie folgt gelöst:

1) Im Forum gesucht (leider weiss ich nicht mehr die Begriffe 🙁 )
2) Dort ne Spur gefunden...
3) und wie folgt verfeinert:
Der folgende PHP-Code kommt in die typo3conf/localconf.php.
Wichtig: Beachte, dass Du diesen Code vor der Zeile "## INSTALL SCRIPT EDIT POINT TOKEN - all lines after this points may be changed by the install script!" einfügst (mit etwas Englisch selbsterklärend, warum).

// USER Functions by Falk Walter - Kommentar kannst Du gerne abändern.

function user_condition($conditionValue) {
  global $GLOBALS;

  switch($conditionValue) {
  	case "pageHasSubpages":
  	  if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
  	    return true;
  	  }
  	  break;
  	case "pageHasNoSubpages":
  	  if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
			   return false;
  	  } else {
  	    return true;
  	  }
  	  break;
  }
}



## INSTALL SCRIPT EDIT POINT TOKEN - all lines after this points may be changed by the install script!

Das kommt noch VOR Dein PAGE-Objekt ins TS-Setup:

# Builds secondary navigation
# Needed Constants:
# - secondaryNavigation.header_lang = string (Header for secondary Navigation Box)

lib.secondaryNavigation = COA
lib.secondaryNavigation {
  wrap = <div id="secondaryNavigation">|</div>
  10 = TEXT
  10.dataWrap = <h3 class="secondaryNavigation">{leveltitle:1}</h3>
  20 = HMENU
  20.entryLevel = 1
  20.1 = TMENU
  20.1 {
    wrap = <ul>|</ul>
    ACT = 1
    NO.allWrap = <li class="secondaryNavigationNotActive">|</li>
    NO.ATagTitle.field = abstract // description // title
    ACT.allWrap = <li class="secondaryNavigationActive">|</li>
    ACT.ATagTitle.field = abstract // description // title
    ACT.stdWrap.wrap = <span class="secondaryNavigationActive">|</span>
  }
}

# Empties lib.secondaryNavigation if there are pages on the second level
[treeLevel = 1] && [userFunc = user_condition(pageHasNoSubpages)]
  lib.secondaryNavigation >
[end]

Hoffe, das hilft,

Falk

Unbekannter Benutzer · · Beste Antwort

Ja genau das meinte ich!!
Nur bekomme ich immer einen Error:

Fatal error: Cannot redeclare user_condition() (previously declared in /var/www/vhosts/domain.de/httpdocs/typo3conf/localconf.php:19) in /var/www/vhosts/domain.de/httpdocs/typo3conf/localconf.php on line 19

hab schon viel rumprobiert aber es net hinbekommen!!

$TYPO3_CONF_VARS['SYS']['sitename'] = 'Blank DUMMY';

	// Default password is "joh316" :
$TYPO3_CONF_VARS['BE']['installToolPassword'] = '******************';

$TYPO3_CONF_VARS['EXT']['extList'] = '[...]';

$typo_db_extTableDef_script = 'extTables.php';


// ClearMenü if no Items by Falk Walter
   //TS:
  //# Empties lib.secondaryNavigation if there are pages on the second level
  //[treeLevel = 1] && [userFunc = user_condition(pageHasNoSubpages)]
  //  lib.secondaryNavigation >
  //[end] 
 
function user_condition($conditionValue) {
  global $GLOBALS;
 
  switch($conditionValue) {
        case "pageHasSubpages":
          if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
            return true;
          }
          break;
        case "pageHasNoSubpages":
          if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
                           return false;
          } else {
            return true;
          }
          break;
  }
}

//---------------------

## INSTALL SCRIPT EDIT POINT TOKEN - all lin...

Thx Vinni10

FalkWalter ·

Hmmmm... bei mir tut es (3.8.0)... ich glaube aber nicht, dass es an der Version liegt. Habe auch am Code nichts verändert...

Georg, weisst Du da event. weiter? Sollte ja eigentlich ne Standardsache sein... https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Syntax/Conditions/Index.html#typoscript-syntax-implementing-custom-conditions

Was passiert denn, wenn Du das Beispiel aus der Referenz benutzt? Ein ausführlicheres Beispiel findest Du auch in der offiziellen TS-Referenz https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html

Grüßle
Falk

P.s.: Ist die Condition auch ja NICHT innerhalb einer Klammer gesetzt?

Unbekannter Benutzer ·

Hab ne lösung!

if(!function_exists(user_condition)){ 
function user_condition($conditionValue) {
  global $GLOBALS;
 
  switch($conditionValue) {
        case "pageHasSubpages":
          if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
            return true;
          }
          break;
        case "pageHasNoSubpages":
          if(sizeof($GLOBALS["TSFE"]->sys_page->getMenu($GLOBALS["TSFE"]->id)) !=0) {
                           return false;
          } else {
            return true;
          }
          break;
  }
}
}

Thx Vinni10