Guten Tag allerseits,
ich hoffe ich habe den Thread an der korrekten Stelle im Forum erstellt, ich denke es passt besser zu Typoscript als zu TemplaVoila.
Ich suche seit etlichen Stunden nach einer Lösung für mein Typoscript Problem aber konnte bisher nichts finden, deshalb hoffe ich hier eventuell Hilfe zu bekommen.
Zum Problem:
Ich habe mit TemplaVoila ein neues Datenelement(FCE) angelegt, in dem ein Pfad zu einem Ordner angegeben werden soll.
Dieser Pfad soll als Parameter an eine PHP-Funktion übergeben werden.
Das funktioniert mit statischen Werten (Pfad manuell eingetragen) auch super.
Sobald ich aber dynamisch den Inhalt des TemplaVoila Feldes an PHP übergeben will, funktioniert dies nicht mehr.
Folgend der Auszug des angelegten Feldes "dlfiles" aus TemplaVoila in XML:
<dlfiles type="array">
<tx_templavoila type="array">
<title>Files</title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>input</eType>
<TypoScript>
10 = TEXT
10.field = dlfiles
20 = USER_INT
20 {
userFunc = user_linkFiles
includeLibs = fileadmin/templates/scripts/filelink.php
a.value.data = dlfiles
}
</TypoScript>
<proc type="array">
<HSC>0</HSC>
<stdWrap></stdWrap>
<int>0</int>
</proc>
<preview></preview>
</tx_templavoila>
<TCEforms type="array">
<label>Files</label>
<config type="array">
<type>input</type>
<size>48</size>
<eval>trim</eval>
</config>
</TCEforms>
</dlfiles>
Bei "10" funktioniert der Zugriff auf den Inhalt des Feldes "dlfiles"... Dort gibt er den Pfad korrekt auf der Webseite aus.
Bei "20" wird die Variable a aber leider nicht mit dem Inhalt des dlfiles-Feldes gefüllt, sondern es wird einfach nur der text
"dlfiles" ausgegeben.
Habe schon viele Dinge ausprobiert aber bekomme es nicht hin.
Ist dies überhaupt an der Stelle möglich?
Falls nein, wie kann ich es sonst lösen, das eine PHP-Funktion aufgerufen wird welche automatisch als Parameter den im Backend angelegten Pfad übergeben bekommt?
Vielen vielen Dank im Voraus für jegliche Hilfe.
Liebe Grüße,
Sascha
Zur Info:
Auch wenn ich es mit "20.field = dlfiles" versuche und in PHP per $conf['field'] darauf zugreife, erhalte ich nur den Text "dlfiles" und nicht den im Backend hinterlegten Wert.
S4SC-4 schriebZur Info:
Auch wenn ich es mit "20.field = dlfiles" versuche und in PHP per $conf['field'] darauf zugreife, erhalte ich nur den Text "dlfiles" und nicht den im Backend hinterlegten Wert.
... in PHP müßte es dann ja auch $conf['20'] lauten
... in PHP müßte es dann ja auch $conf['20'] lauten
Da kommt "Null" raus.
Wenn ich das richtig verstanden habe sind wir an der Stelle im PHP in 20 "drin", weil wir PHP von 20 aus aufrufen. Auf 10 könnte ich zum Beispiel nicht zugreifen.
Deswegen kann ich mit $conf['field'] dann auf das field von 20 zugreifen.
Die Auflösung des "dlfiles"-Feldes wird so anscheinend nicht funktionieren, dazu müsste 20 = TEXT sein und nicht 20 = USER_INT.
Hat vielleicht jemand noch eine Idee?
Liebe Grüße
Edit: ÜBrigens ist es Typo 4.6.3.
Ich weiß jetzt nicht, wie DCE funktioniert, aber wenn das analog zu den anderen USER-Objecten ist, dann kann so meines wissens nach auch dlfiles nicht aufgelöst werden, ausser evtl als Text.
10 = TEXT
10.field = dlfiles
20 = USER_INT
20 {
userFunc = user_linkFiles
includeLibs = fileadmin/templates/scripts/filelink.php
a.value.data = dlfiles
}
Zugreifen würdest du auf den Wert in diesem Fall so:
function user_linkFiles($content,$conf) {
$dlfiles = $conf['a.']['value.']['data'];
}
Aber dann steht da in $dlfiles nur der String "dlfiles". Damit da was halbwegs sinnvolles drin steht müsste der Wert z.b. mit cObjGetSingle gerendert werden. Funktioniert denn ein Funktionsaufruf ohne Klasse aktuell noch?
Wie gesagt, mit DCE kann sich das natürlich auch anders verhalten, dann nehme ich alles zurück.
Genau, hatte auf die Variable a in PHP zugegriffen wie du es geschrieben hast, da kam "dlfiles" wieder als Text.
Ich habe es nun doch lösen können...
Mit var_dump($this) habe ich das Klassenobjekt ausgelesen. Im data-Array war mein Feld vorhanden und korrekt gefüllt, musste dann nur noch rausfinden wie ich in PHP darauf zugreifen kann.
Habe es dann so gemacht:
$path = $this->cObj->data['dlfiles'];
Und das gibt mir den gerenderten Wert aus dem Backend.
Eigentlich total simpel, aber wenn noch die Erfahrung fehlt ist es dann doch gar nicht mal so einfach. :-)
Ich danke Dir trotzdem für deine Hilfe !
Liebe Grüße,
Sascha