Zum Inhalt springen

Teilbaum als Statusfunktion verwenden - anzeigen NotInMenu oder Hidden pages

Erstellt am 30. Dezember 2010 · 10 Antworten · letzte Antwort am 5. Januar 2011

Tags: Frage

flashsilver ·

Hallo an alle und frohes Neues!

Zum Abschluss des Jahres habe ich noch eine Frage an Euch, die Ihr vielleicht schonmal in einem eurer Projekte umgesetzt habt. Es geht um ein Teilbaum der aus 2 Seiten "Aktiv" und "Inaktiv" besteht. Der Redakteur soll wenn möglich über das Verstecken der Seite den Status "inaktiv" und die sichtbare Seite als "aktiv" im Frontend aktivieren können. Ich habe folgendes TS dazu:

20 = HMENU
    20 {
      special = directory
      special.value = 29
      maxItems = 2
      includeNotInMenu = 1
      1 = TMENU
      1 {
        NO {
          doNotLinkIt = 1
          allWrap = <div class="active">|</div>
          #stdWrap.override.if.isTrue.data = page:hidden
          #stdWrap.override.wrap = <div class="inactive">|</div>
          
          stdWrap.override.if.isTrue.field = hidden
          stdWrap.override.wrap = <div class="inactive">|</div>
          #allStdWrap.if.value.field = nav_hide
          #allStdWrap.if.equals = 1
        }
      }
    }

Wie Ihr seht, habe ich schon mehrere Varianten ausprobiert (siehe TS-Kommentare), aber noch zu keinem Ergebniss gekommen.

Könnt Ihr mir da weiterhelfen oder evtl. einen anderen Lösungsansatz, um ein Status ins FE zu bekommen, dass sehr einfach von einem Redakteur gepflegt werden kann?

Gruß der,
flashsilver

hwt ·

Hi,

allStdWrap gibt es schonmal nicht. Und mit override kannst du nur den Inhalt des zugehörigen Elementes überschreiben, hier stdWrap.

Also sollte es so gehen:

NO {
          doNotLinkIt = 1
          stdWrap.wrap = <div class="active">|</div>
          stdWrap.override.if.isTrue.field = hidden
          stdWrap.override.wrap = <div class="inactive">|</div>
        }

Die Variante mit equals entsprechend auch.

Guten Rutsch!

flashsilver ·

Hallo hwt,

leider funktioniert dein Vorschlag nciht. Ich bekomme immer nur die sichtbare Seite im FE angezeigt, aber die verborgene Seite nie. Der Redakteur soll durch das Sichtbar/Verstecken der beiden Seiten einen Status im FE anzeigen. Es müssen also immer beide Seiten angezeigt werden, unabhängig ob die Seite Sichtbar oder Verborgen ist.

Wie kann man ganz allgemein verborgene Seiten vom BE im FE anzeigen? Ich dachte auch das deine Lösung funktionieren müsste. Ich habe weiter herum probiert, aber noch nicht zur einer Lösung gekommen...

Gruß,
flashsilver

flashsilver ·

Ich habe es auch gemerkt das ich mit versteckten SEiten nicht ans Ziel komme. Ich habe

includeNotInMenu = 1

hinzugefügt. Dennoch wird nur die sichtbare, also die mit active gekennzeichnete Seite angezeigt. Ich habe das TS mittleriweile so abgeändert:

20 = HMENU
    20 {
      special = list
      special.value = 30,31
      includeNotInMenu = 1
      1 = TMENU
      1 {
        expAll = 1
        noBlur = 1
        NO {
          doNotLinkIt = 1
          doNotShowLink = 0
          stdWrap.if.isFalse.field = nav_hide
          stdWrap.wrap = <div class="active">|</div>
          stdWrap.override.if.isTrue.field = nav_hide
          stdWrap.override.wrap = <div class="inactive">|</div>
        }
      }
    }

Ich dachte ich hätte es so verstanden, dass wenn die Seite im Menü erscheinen soll, dass dann mit

<div class="active">|</div>

gewrappt wird. Und wenn die Seite im Menü versteckt bleiben soll, dann mit

<div class="inactive">|</div>

überschrieben gewrappt wird.

Leider bekomme ich immer nur eine Seite angezeigt und zwar die Sichtbare mit

<div class="active">Aktiv</div>

. Ich möchte aber immer beide Seiten anzeigen, unabhängig ob sie im Menü angezeigt werden sollen oder nciht:

<div class="active">Aktiv</div>
<div class="inactive">InAktiv</div>

Hast Du da noch eine Idee? Ich weiß echt nicht weiter, aber ich hoffe ich konnte Dir mein Problem ein wenig verständlicher formulieren. :o

Gruß,
flashsilver

hwt ·

Hi,

danke für die genaue Beschreibung.

Hab es bei mir mal grad getestet und festgestellt, dass includeNotInMenu richtig funktioniert.

Ich dachte, dass es mit

stdWrap.wrap = <div class="active">|</div>
stdWrap.override.if.isTrue.field = nav_hide
stdWrap.override.wrap = <div class="inactive">|</div>

zu lösen ist, aber das geht so nicht denn dann werden augenscheinlich einige Intitialkonfigurationen im stdWrap überschrieben.

Spontan hab ich grad keine weitere Idee dazu.

MfG!

Unbekannter Benutzer ·

Naja mit dem override überschreibst du den eigentlichen Linktext, denn das override bezieht sich ja nicht auf das wrap sondern auf den Inhalt, der vom wrap umschlossen wird. du brauchst eigentlich einen override des wrap, das geht z.B. mit outerWrap und ich wrüde es dann etwa so probieren:

stdWrap.outerWrap = <div class="active">|</div>
stdWrap.outerWrap.override.if.isTrue.field = nav_hide
stdWrap.outerWrap.override = <div class="inactive">|</div>

Ungetestet, sollte aber gehen.

flashsilver ·

Hallo ihr beiden,

danke für eure Hinweise. Ich werde es nachher zu Hause testen und euch ein Feedback geben, ob es geklappt hat.

@hwt: Wenn du es getestet hast, dann sollte es auch mir gehen. ich melde mich und danke für eure Unterstützung

gruß,
flashsilver

hwt ·

Ja, doch eigentlich steht das schon richtig drin. Als Typ für outerWrap steht da ja wrap/stdWrap und override ist ja ne stdWrap-Eigenschaft, also nicht nur auf outerWrap beschränkt.

Mir war nur nicht klar, dass override nur den Inhalt des Elementes überschreibt und nicht seine Wraps.

Ein ergänzender Hinweis wie "Äußerer Wrap um das Element mit stdWrap-Eigenschaft." wäre aber vllt. hilfreich.

Mfg!