mistral
Tue. 17. June 2008, 20:13
ZITAT(FireFlyer @ Tue. 17. June 2008, 18:18)
Ich muss es jetzt noch mal versuchen.
Bei einem selbst zusammen geschusterten Modul hab ich ein $mip_form['3'] als Textarea. In diesem sollen Platzhalter ersetzt werden, wie es schon bei vielen Modulen der Fall ist.
Meine Funktion:
$tmp_details = "MOD_VALUE[3]";
$tmp_details = str_replace('{platzhalter}', 'Hallo', $tmp_details);
echo $tmp_details;
Dies klapp dann schon, denn es wird Hallo statt {platzhalter} angezeigt. Das war nur zum testen.
Jetzt sollte aber folgender Code eingesetzt und abgearbeitet werden, statt dem Hallo:
$a="MOD_VALUE[10]";
include("/ordner/test.php");
Ich möchte in dieser Textarea einfach HTML-Code mit den {platzhaltern} verbinden, um ein recht flexibles Design zu erstellen!
Wenn du in deinem Includ $a verwendest, wird es auch funktionieren, ab
Wenn du aber MOD_VALUE[10] im includ verwendets, dann ist auch klar, dass das nicht funktioniert.
Die MOD_VALUE[10] werden vor dem ausführen durch deren Inhalt ersetzt, dies kann aber nur beim Inhalt (output) des Modul geschehen und nicht bei eingebundenen Daten.
Siehe:
Lösung1:
im include $a verwenden. Dies ist die sinnvollste Variante und wird z.B. auch im ContentFlex so verwendet.
unschöne Variante2:
im Include $cms_mod['value'][10] verwenden anstelle von "MOD_VALUE[10]". Bei dieser Variante besteht, die Gefahr, dass diese in einer zukünftigen Version nicht mehr funktioniert.
P.S.
Wenn die MOD_VALUE im dynamisches PHP zur Verfügung stehen sollen gibt es noch diesen Code:
QUELLTEXT
<CMSPHP:CACHE>
//Alle Variablen, die nur innerhalb des gecachten PHPs sichtbar sind, auch für dynamisches PHP zur Verfügung stellen
echo '<CMSPHP>';
if (is_array($cms_mod['value'])) {
foreach($cms_mod['value'] AS $k => $v){
echo '$mvars["'.$k.'"] = "'. addslashes($v) .'";'."\n";
}}
echo '</CMSPHP>';
</CMSPHP:CACHE>