Zum Inhalt springen

TMENUE kein Link wenn Unterpunkte

Erstellt am 8. Februar 2004 · 23 Antworten · letzte Antwort am 3. Januar 2006 · Seite 2 von 2

Tags: Frage

bloodbrother ·

Wer lesen kann, ist klar im Vorteil

sicher... 😉

In gmenu_layers zur Zeile 123 springen

und

gmenu_layers gerade vom Server geladen (V3.5)

Nun, ich hab hier V3.6.0RC1. Hmm, scheint so als wären da noch ein paar Zeilen dazugekommen. 😉
Ich wundere mich deshalb auch nicht wirklich, warum es bei mir nicht funktioniert.

Kleiner Auszug aus der Datei?
nur function extProc_beforeLinking($key)

		if ($this->I['uid'])	{

			array_push($GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMparentId'],$this->WMid);
			$this->WMtheSubMenu = $this->subMenu($this->I['uid'],$this->I['mount_pid']);
			array_pop($GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMparentId']);
			$this->WMisSub = trim($this->WMtheSubMenu) ? 1 : 0;

			if ($this->mconf['lockPosition_addSelf'])		{
				$this->WMy+=(strcmp($this->mconf['setFixedHeight'],'')?$this->mconf['setFixedHeight']:$this->I['val']['output_h'])+intval($this->mconf['lockPosition_adjust']);
				$this->WMx+=(strcmp($this->mconf['setFixedWidth'],'')?$this->mconf['setFixedWidth']:$this->I['val']['output_w'])+intval($this->mconf['lockPosition_adjust']);
			}

			if ($this->isActive($this->I['uid']) && $this->mconf['displayActiveOnLoad'])	{	// orig: && $this->WMisSub, changed 210901
				$this->WMactiveHasSubMenu = $this->WMisSub;
				$this->WMactiveKey = 'Menu'.$this->WMid.$key;


				$this->WMrestoreVars=trim('
GLV_restoreMenu["'.$this->WMid.'"] = "'.$this->WMactiveKey.'";
				');
				$this->WMrestoreScript='	GL_doTop("'.$this->WMid.'",GLV_restoreMenu["'.$this->WMid.'"]);'.($this->mconf['freezeMouseover']?'
	GL'.$this->WMid.'_over(GLV_restoreMenu["'.$this->WMid.'"]);
':'');
			}

			if ($this->WMisSub)	{
													$event="GL_stopMove('".$this->WMid."');";
				$this->I['linkHREF']['onMouseover']='GL_doTop(''.$this->WMid.'', 'Menu'.$this->WMid.$key.'');'.$this->I['linkHREF']['onMouseover'];
					// Added 120802; This means that everytime leaving a menuitem the layer should be shut down (and if the layer is hit in the meantime it is not though).
					// This should happen only for items that are auto-hidden when not over and possibly only when a hide-timer is set. Problem is if the hide-timer is not set and we leave the main element, then the layer will be hidden unless we reach the layer before the timeout will happen and the menu hidden.
				if (t3lib_div::intInRange($this->mconf['hideMenuWhenNotOver'],0,600) && $this->mconf['hideMenuTimer'])	{
					$event.='GL_resetAll("'.$this->WMid.'");';
				}
				$this->I['linkHREF']['onMouseout'].=$event;
			} else {
				$this->I['linkHREF']['onMouseover']='GL_hideAll("'.$this->WMid.'");'.$this->I['linkHREF']['onMouseover'];
				$event='GL_resetAll("'.$this->WMid.'");';
				$this->I['linkHREF']['onMouseout'].=$event;
			}

			$this->WMxyArray[] = 'GLV_menuXY["'.$this->WMid.'"]["Menu'.$this->WMid.$key.'"] = new Array('.$this->WMx.','.$this->WMy.',"itemID'.t3lib_div::shortmd5($this->I['uid'].'-'.$this->WMid).'","anchorID'.t3lib_div::shortmd5($this->I['uid'].'-'.$this->WMid).'");';
		}

Oder sieht die Funktion in V3.5 gaaaanz anders aus?

Auf jeden Fall hab ich, wie von Dir empfohlen bei if ($this->WMisSub) die Zeilen eingefügt- und das tuts dann doch nicht.
Hat das vielleicht damit zu tun, daß "meine" gewünschte Verteilerseite nicht in der zweiten sondern in der ersten Ebene des Menüs liegt? Ich verstehe WMisSub als Whole_Menu_is_Submenu. Sorry, aber PHP kenn ich bisher nur aus 3 Meilen Entfernung.

Danke für jeden Hinweis, bis jetzt und auch in Zukunft.

BB

Unbekannter Benutzer ·

War leider die letzten Tage offline ... habe dein Posting jetzt nur flüchtig überflogen, aber vielleicht liegt es am SETUP, hier mal meine 1. Ebene, wenn du eine weitere Ebene benutzt, musst du nochmals meinen neuen Parameter setzten ...

# Menu cObject
temp.mTop = HMENU
temp.mTop.1 = TMENU_LAYERS
temp.mTop.1 {
  expAll = 1
  layerStyle = position:absolute; width: 136px; VISIBILITY:hidden;

  # Menu verankern, damit es nicht der Maus folgt
  lockPosition = x

  # Position wo sich die naechste Ebene oeffnen soll
  relativeToParentLayer = 1
  relativeToTriggerItem = 1
  topOffset = 17
  leftOffset = -25

  doNotLinkIt = {$doNotLinkIt}

  # Angabe wann sich die naechste Ebene wieder schliessen soll
  hideMenuWhenNotOver = 50
  hideMenuTimer = 70

  NO.allWrap = <div class="level0-no">|</div> |*| <div class="level0-no">|</div> |*| <div class="level0c-no">|</div>
  ACT = 1
  ACT.allWrap = <div class="level0-act">|</div>
}

In den Constants habe ich meine PIDs der Verteilerseiten definiert, doNotLinkIt = {$doNotLinkIt} muss dann auch für Ebene 2 und 3 eingetragen sein, dann sollte es gehen ...

bloodbrother ·

Hallo,

funzt wunderbar 🙂
doNotLinkIt stand bei mir nur unterhalb von NO, deshalb klappte das zunächst nicht.

Großes Lob und vielen Dank!

BB

w@ ·

Hmmm....wäre ja genau das was ich brauche, aber ich
kriegs nicht auf die Reihe....
(ev. liegt's ja auch am lesen können ;-) )

Was ich gemacht hab:
tmenu_layers.php unter media/scripts/.
Zeile 125 angepasst:

if ($this->WMisSub) {
// Fix für Verteilerseiten
// Im Setup werden die PIDs der Seiten angegeben,
// die als reine Verteilerseiten dienen ...
$noLinkItems = $this->mconf["doNotLinkIt"];
$noLinkItems = explode(",", $noLinkItems);
foreach ($noLinkItems as $var) {
if ($this->I["uid"] == $var) $this->I["linkHREF"]["HREF"] = '#';
}
.......

Im Template für das Menu unter Constants:

doNotLink = 10,11,12

Im Setup für Ebene 1:

# Eigenschaften Ebene 1
temp.tmenu.1 {

layerStyle = position:absolute;VISIBILITY:hidden;

# Menu verankern, damit es nicht der Maus folgt
lockPosition = x

# Position wo sich die naechste Ebene oeffnen soll (Ebene 2)
relativeToParentLayer=1
relativeToTriggerItem=1
topOffset=14
leftOffset=0
# Angabe wann sich die naechste Ebene wieder schliessen soll
hideMenuWhenNotOver = 50
hideMenuTimer = 70

# alle Menuepunkte anzeigen
expAll=1

# Links welche keinen Link im Menu haben sollen, unter Constants definiert
doNotLinkIt = {$doNotLink}

Aber es will nicht.....
Wo liegt denn hier der Hund begraben....?

Danke und gruss
w@

<----edit start---->
ähemm....grosse rückruf aktion....
funzt hervorragend
kein problem mit lesen nur eins mit schauen... :o
<-----edit schluss----->

Unbekannter Benutzer ·

Aber hallo....

ist ja genau das was ich schon lange ver/gesucht habe 😉

Abeerrrr.... läuft das auch mit SimulateStatic...?

Da wir ja die PID etwas umgewandelt und als xx.html
angezeigt...

Frage weil...: bei der einen seite ohne simulatestatic funzt.
anderes baustell mit simulatestatic funzt nicht.

Hab ich was übersehen oder ist's halt so....?

<----edit---->
Noch ne Frage...
Wenn ich mit der Maus über ein Menupunkt geh der nicht
verlinkt ist bekomm ich "trotzdem" ein *händchen*
Gibt's ne möglichkeit das so zu machen das bei den
unverlinkten Seiten der Mauszeiger ein Zeiger bleibt?
<----edit---->

Gruss peay

Cre8tive ·
peay schrieb

<----edit---->
Noch ne Frage...
Wenn ich mit der Maus über ein Menupunkt geh der nicht
verlinkt ist bekomm ich "trotzdem" ein *händchen*
Gibt's ne möglichkeit das so zu machen das bei den
unverlinkten Seiten der Mauszeiger ein Zeiger bleibt?
<----edit---->

du weist der ersten ebene ja eine stylesheet klasse zu, und in er kannst du die mausart angeben

Unbekannter Benutzer ·

Hi Cre8tive

Grundsätzlich hast du ja Recht mit der klasse, nur ist es mit
dieser Lösung ja möglich auf derselben Ebene Linked und
NoLinked Items zu haben.

Deshalb geht's so nicht wirklich. Sonst hätten ja die anderen
Elemente mit Link auch nen Zeiger....

Oder lieg ich da falsch...?

Unbekannter Benutzer ·

Ich bin nicht mehr ganz im Thema drinne und es ist fast WE ... 😉 , aber du kannst alles machen, was du auch immer willst:

Funzt nicht mit SimDocs? Ändere das PHP-Script dementsprechend, sodass nicht die index.php?irgendwas sondern irgendwas.html abgefragt wird ...

... ebenso wird es gehen, dass du diesen "NoLinks" eine andere CSS, bzw. eine direkte Style-Angabe mitgibst ...

... mit etwas Phantasie und PHP geht das alles 😉

photek ·

Hm, ich stehe jetzt auch vor diesem Problem und habe mich strikt an Commodores Anleitung gehalten.
Leider funtioniert es bei mir nicht, oder liegt es jetzt an Version 3.8.1 ?

Gruß,

photek

MarshallMatters ·

@photek keine Ahnung habe dasselbe Problem. Habe auch die 3.8.1 Version!!

tmenu_layers.php unter media/scripts/

if ($this->WMisSub) {
								// Fix für Verteilerseiten
								// Im Setup werden die PIDs der Seiten angegeben,
								// die als reine Verteilerseiten dienen ...
								$noLinkItems = $this->mconf["doNotLinkIt"];
								$noLinkItems = explode(",", $noLinkItems);
								foreach ($noLinkItems as $var) {
								if ($this->I["uid"] == $var) $this->I["linkHREF"]["HREF"] = '#';
								}
                                $event="GL_stopMove('".$this->WMid."');";
                                $this->I['linkHREF']['onMouseover']='GL_doTop(\''.$this->WMid.'\', \'Menu'.$this->WMid.$key.'\');'.$this->I['linkHREF']['onMouseover'];
                                        // Added 120802; This means that everytime leaving a menuitem the layer should be shut down (and if the layer is hit in the meantime it is not though).
                                        // This should happen only for items that are auto-hidden when not over and possibly only when a hide-timer is set. Problem is if the hide-timer is not set and we leave the main element, then the layer will be hidden unless we reach the layer before the timeout will happen and the menu hidden.
                                if (t3lib_div::intInRange($this->mconf['hideMenuWhenNotOver'],0,600) && $this->mconf['hideMenuTimer'])        {
                                        $event.='GL_resetAll("'.$this->WMid.'");';
                                }
                                $this->I['linkHREF']['onMouseout'].=$event;
			}

Im template im constants teil:
# PID's der Seiten welche im Menu nicht verlinkt werden sollen
DoNotLink = 4,3,190,270,306

Im Setup:

subparts.TOPNAV = HMENU
subparts.TOPNAV.special = directory
#subparts.TOPNAV.special = list
subparts.TOPNAV.special.value = 1
#subparts.TOPNAV.excludeUidList = 1,2,3
subparts.TOPNAV {
wrap = <div id="menu"> | </div>
entryLevel = 0
1 = TMENU
1 {
expAll=1
noBlur = 1
# Links welche keinen Link im Menu haben sollen, unter Constants definiert
doNotLinkIt = {$DoNotLink}
#doNotLinkIt.wrap = <ul id="donotlink"> | </ul>

wrap = <ul id="menuList" class="adxm"> | </ul> 
NO {
wrapItemAndSub = <li> | </li> 
}
}

Könnte hier jemand helfen. Ich nörgle schon die längste Zeit an diesem Problem rum. Habe schon wirklich alles versucht

MarshallMatters ·

Natürlich geht das nicht, da ich es mit einem TMENU versuche und nicht mit dem TMENU_LAYERS. Gibt es eine gleiche Lösung einfach mit dem TMENU??
Kann mir irgend jemand helfen??