Zum Inhalt springen

fluid <f:cObject hmenu data current übergeben

Erstellt am 23. November 2012 · 6 Antworten · letzte Antwort am 25. Juli 2016

Tags: Fluid, ViewHelper, Frage

zeitgenosse ·

Guten abend,

weiss jemand ob dies möglich ist?

ich möchte gerne einem HMENU typoscript object den wert für special.value übergeben.

Fluid:

<f:cObject typoscriptObjectPath="lib.mymenu" data="{myobject}"  current="{myobject.pid}"/>

Typoscript:

lib.mymenu= HMENU
lib.mymenu{
	special = directory
	special.value = {myobject.pid}
	1 = TMENU
	1{
		...
	}
	2 < .1
	3 < .2
}

alle meine versuche scheitern kläglich.

gruss

kainobi ·
kitsunet schrieb
special.value.current = 1

Das stimmt schon so, nur das Attribut des ViewHelpers heisst "currentValueKey", nicht "current". Du müsstest deshalb eigentlich eine Fehlermeldung bekommen...
Dh. es muss so heissen:

<f:cObject typoscriptObjectPath="lib.mymenu" data="{myobject}"  currentValueKey="pid" />
chrisTheMan ·

Ich stehe gerade vor einer sehr ähnlichen Fragestellung und finde die Lösung nicht.
Mit folgender Zeile möchte ich ein TYPOscript laden und diesem einen Wert übergeben:

<f:cObject typoscriptObjectPath="lib.category" data="{settings}" currentValueKey="categories" />

In {settings.categories} steht meine Kategorie-ID.

Die Lib sieht so aus:

lib.category = COA
lib.category {
  10 = TEXT
  10 {
    value = {leveltitle:2}
    stdWrap.insertData = 1
    wrap = <span class="header">|</span>
  }

  20 = CONTENT
  20 {
    table = sys_category
    select {
      selectFields = title, description
      pidInList = 2

      ### Dieser Wert soll dynamisch ausgetauscht werden!
      where = uid = 7
      max = 1
    }

    renderObj = COA
    renderObj {
      10 = TEXT
      10 {
        field = title
        wrap = <h3>|</h3>
        htmlSpecialChars = 1
      }

      20 = TEXT
      20 {
        field= description
        wrap = <p>|</p>
        htmlSpecialChars = 0
        parseFunc = < lib.parseFunc_RTE
      }
    }
  }
}

Was muss ich tun, damit die WHERE-Bedingung in Zeile 18 den dynamischen Wert annimmt?

Danke euch!

chrisTheMan ·

Des Rätsels Lösung auf meine Fragestellung ist:

Fluid Template:

<f:cObject typoscriptObjectPath="lib.category" data="{uid: settings.categories}" />

TYPOscipt:

lib.category = COA
lib.category {
  10 = TEXT
  10 {
    value = {leveltitle:2}
    stdWrap.insertData = 1
    wrap = <span class="header">|</span>
  }
 
  20 = CONTENT
  20 {
    table = sys_category
    select {
      selectFields = title, description
      pidInList = 2
 
      ### Dieser Wert soll dynamisch ausgetauscht werden!
      andWhere = uid = {field:uid}
      andWhere.insertData = 1
      max = 1
    }
 
    renderObj = COA
    renderObj {
      10 = TEXT
      10 {
        field = title
        wrap = <h3>|</h3>
        htmlSpecialChars = 1
      }
 
      20 = TEXT
      20 {
        field= description
        wrap = <p>|</p>
        htmlSpecialChars = 0
        parseFunc = < lib.parseFunc_RTE
      }
    }
  }
}

In Zeile 18 füge ich den dynamischen Wert aus dem Template ein. Das funktioniert aber nur mit dem Zusatz "andWhere.insertData = 1" in Zeile 19.