CMS_VALUE in Schleifen (CMS_VALUE[$i];)
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
CMS_VALUE in Schleifen (CMS_VALUE[$i];)
Hi,
da ich gerade an der Umsetzung unserer Firmen-Website in Contenido sitzt, bin ich an der Problem der Verwedung von CMS_VALUE in Schleifen geraten; und da das ja bisher nicht möglich war, hab ich mich hingesetzt und etwas gebastet... Also hier meine Lösung des Problems:
(Con.-Ver. 4.4.2)
Alle Änderungen betreffen die Funktion "conGenerateCode" in der Datei "functions.con.php" im Contenido "include"-Verzeichnis.
(Achtung! Vorher Backup anlegen!
Ich habe die Änderungen zwar getestet, aber man weiß ja nie...)
1.) bei Zeile 1285 wird hinter
foreach ($a_container as $key=>$value) {
folgendes eingefügt:
$CiCMS_VALUE = '';
2.) ca. 10 Zeilen weiter wird hinter
$template = $db->f("template");
folgendes eingefügt:
$a_c[$value] = preg_replace("/(&\$)/","", $a_c[$value]);
3.) noch 10 Zeilen weiter wird der Block:
foreach ($varstring as $key3=>$value3) {
$CiCMS_VALUE = "C".$key3."CMS_VALUE";
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$output = str_replace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = ereg_replace("(CMS_VALUE\[)([0-9]*)(\])", "", $output);
ersetzt durch:
$CiCMS_Var = '$C'.$value.'CMS_VALUE';
foreach ($varstring as $key3=>$value3){
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$CiCMS_VALUE .= $CiCMS_Var.'['.$key3.']="'.$tmp.'"; ';
$output = str_replace("\$CMS_VALUE[$key3]", $tmp, $output);
$output = str_replace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = str_replace("CMS_VALUE", $CiCMS_Var, $output);
$output = str_replace("\$".$CiCMS_Var, $CiCMS_Var, $output);
und 4.) noch ca. 20 Zeilen weiter ersetzt ihr
$code = str_replace("CMS_CONTAINER[$value]", $output, $code);
durch
$code = str_replace("CMS_CONTAINER[$value]", "<?php $CiCMS_VALUE ?>\r\n".$output, $code);
Damit alles sauber funktioniert sollte noch die Tabelle "con_code" geleert werden, damit die Änderungen wirksam werden.
Man kann CMS_VALUE nun benutzen wie eine normale PHP-Variable (auch mit führendem "$"-Zeichen)
Die ganze Sache hat den Vorteil, das man sie eben nun unter anderem auch in Schleifen einsetzen kann z.B.:
"for ($i=0; $i<10; $i++) echo $CMS_VALUE[$i].'<br>';"
So, ich freue mich auf euer Feedback; wenn es ein paar Leute getestet haben und es alles glatt geht, würde ich das ganze nämlich Erweiterung auf die "reguläre" Contenido-Seite hochladen...
MfG Daniel
da ich gerade an der Umsetzung unserer Firmen-Website in Contenido sitzt, bin ich an der Problem der Verwedung von CMS_VALUE in Schleifen geraten; und da das ja bisher nicht möglich war, hab ich mich hingesetzt und etwas gebastet... Also hier meine Lösung des Problems:
(Con.-Ver. 4.4.2)
Alle Änderungen betreffen die Funktion "conGenerateCode" in der Datei "functions.con.php" im Contenido "include"-Verzeichnis.
(Achtung! Vorher Backup anlegen!
Ich habe die Änderungen zwar getestet, aber man weiß ja nie...)
1.) bei Zeile 1285 wird hinter
foreach ($a_container as $key=>$value) {
folgendes eingefügt:
$CiCMS_VALUE = '';
2.) ca. 10 Zeilen weiter wird hinter
$template = $db->f("template");
folgendes eingefügt:
$a_c[$value] = preg_replace("/(&\$)/","", $a_c[$value]);
3.) noch 10 Zeilen weiter wird der Block:
foreach ($varstring as $key3=>$value3) {
$CiCMS_VALUE = "C".$key3."CMS_VALUE";
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$output = str_replace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = ereg_replace("(CMS_VALUE\[)([0-9]*)(\])", "", $output);
ersetzt durch:
$CiCMS_Var = '$C'.$value.'CMS_VALUE';
foreach ($varstring as $key3=>$value3){
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$CiCMS_VALUE .= $CiCMS_Var.'['.$key3.']="'.$tmp.'"; ';
$output = str_replace("\$CMS_VALUE[$key3]", $tmp, $output);
$output = str_replace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = str_replace("CMS_VALUE", $CiCMS_Var, $output);
$output = str_replace("\$".$CiCMS_Var, $CiCMS_Var, $output);
und 4.) noch ca. 20 Zeilen weiter ersetzt ihr
$code = str_replace("CMS_CONTAINER[$value]", $output, $code);
durch
$code = str_replace("CMS_CONTAINER[$value]", "<?php $CiCMS_VALUE ?>\r\n".$output, $code);
Damit alles sauber funktioniert sollte noch die Tabelle "con_code" geleert werden, damit die Änderungen wirksam werden.
Man kann CMS_VALUE nun benutzen wie eine normale PHP-Variable (auch mit führendem "$"-Zeichen)
Die ganze Sache hat den Vorteil, das man sie eben nun unter anderem auch in Schleifen einsetzen kann z.B.:
"for ($i=0; $i<10; $i++) echo $CMS_VALUE[$i].'<br>';"
So, ich freue mich auf euer Feedback; wenn es ein paar Leute getestet haben und es alles glatt geht, würde ich das ganze nämlich Erweiterung auf die "reguläre" Contenido-Seite hochladen...
MfG Daniel
Zuletzt geändert von DRothmaler am Mi 10. Mär 2004, 10:48, insgesamt 3-mal geändert.
intressante variante, respekt... (damit ich auch mal was positives sage)
ich hab mir das jetzt etwas(2h) angesehen...
die bestehenden module schlucken diese änderung so wie es aussieht ohne weiteres...
wenn ich das richtig verstanden habe werden "CMS_VALUE" ohne $ so ersetzt wie bisher und $CMS_VALUE wird als variable so belassen...
ich hab mir das jetzt etwas(2h) angesehen...
die bestehenden module schlucken diese änderung so wie es aussieht ohne weiteres...
wenn ich das richtig verstanden habe werden "CMS_VALUE" ohne $ so ersetzt wie bisher und $CMS_VALUE wird als variable so belassen...
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Ja das stimmt, die bestehenden Module sollten weiterhin funktionieren.
Hier mal eine kurze Erklärung der Funktionsweise der einzelnen Änderungen.
Schritt 1: Ist die Initialisierung der Variable $CiCMS_VALUE, in welcher später der String für die Vorbelegung der Variable $CMS_VALUE[$i] für jeden Container gespeichert wird.
Schritt 2: Entfernt ein evtl. vorhandes "&" am Ende des Strings, in dem die CMS_VALUE's gespeichert sind (nicht zwangsläufig nötig, aber sauberer, als wenn später ein $CMS_VALUE mit einem Leeren Wert belegt würde.
Schritt 3:
In der Schleife wird in die Variable $CiCMS_VALUE die Vorbelegung der Werte von $CMS_VALUE[$i] geschrieben und anschließend werden vorhandene CMS_VALUE[1], CMS_VALUE[2], CMS_VALUE[...] Strings wo es möglich ist direkt durch den Entsprechenden Wert ersetzt (dies ist notwendig, damit man "CMS_VALUE[Zahl]" auch weiter direkt im HTML-Code verwenden kann, ohne einen Umweg über "<?php echo" gehen zu müssen, was ja sonst eine Anpassung einiger Module bedeuten würde.
ACHTUNG @emergence und alle anderen, die sich die erweiterung gestern schon eingbeut haben: bei euch fehlt in Schritt 3 noch die Zeile
$output = str_replace("\$CMS_VALUE[$key3]", $tmp, $output);
diese ist nötig, weil einträge der Form "$CMS_VALUE[1]" (also bei denen das führende "$" verwendet wurde, und die direkt Indiziert wurden sonst nicht direkt durch den Wert ersetzt werden würden, sondern durch "$"+Wert
Hinter der Schleife werden dann alle verbleibenden CMS_VALUE's (also die die nicht direkt durch einen Wert ersetzt wurden) in eine Variable umgewandelt.
Und in Schritt 4 wird dann vor dem eingentlichen Modul-(PHP)-Code noch die Vorbelegung der Variablen mit ausgegeben.
Hier mal eine kurze Erklärung der Funktionsweise der einzelnen Änderungen.
Schritt 1: Ist die Initialisierung der Variable $CiCMS_VALUE, in welcher später der String für die Vorbelegung der Variable $CMS_VALUE[$i] für jeden Container gespeichert wird.
Schritt 2: Entfernt ein evtl. vorhandes "&" am Ende des Strings, in dem die CMS_VALUE's gespeichert sind (nicht zwangsläufig nötig, aber sauberer, als wenn später ein $CMS_VALUE mit einem Leeren Wert belegt würde.
Schritt 3:
In der Schleife wird in die Variable $CiCMS_VALUE die Vorbelegung der Werte von $CMS_VALUE[$i] geschrieben und anschließend werden vorhandene CMS_VALUE[1], CMS_VALUE[2], CMS_VALUE[...] Strings wo es möglich ist direkt durch den Entsprechenden Wert ersetzt (dies ist notwendig, damit man "CMS_VALUE[Zahl]" auch weiter direkt im HTML-Code verwenden kann, ohne einen Umweg über "<?php echo" gehen zu müssen, was ja sonst eine Anpassung einiger Module bedeuten würde.
ACHTUNG @emergence und alle anderen, die sich die erweiterung gestern schon eingbeut haben: bei euch fehlt in Schritt 3 noch die Zeile
$output = str_replace("\$CMS_VALUE[$key3]", $tmp, $output);
diese ist nötig, weil einträge der Form "$CMS_VALUE[1]" (also bei denen das führende "$" verwendet wurde, und die direkt Indiziert wurden sonst nicht direkt durch den Wert ersetzt werden würden, sondern durch "$"+Wert
Hinter der Schleife werden dann alle verbleibenden CMS_VALUE's (also die die nicht direkt durch einen Wert ersetzt wurden) in eine Variable umgewandelt.
Und in Schritt 4 wird dann vor dem eingentlichen Modul-(PHP)-Code noch die Vorbelegung der Variablen mit ausgegeben.
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Stimmt, ich hatte dir in meinem 2 Posting einen Hinweis diesbezüglich hinterlassen.soweit ich gesehen habe ist das erste posting ad schritt 3 ergänzt worden...
Außerdem habe ich gestern Nachmittg noch festgestellt, das ich noch ein paar andere Sachen vergessen habe.
Im Moment funktionieren zwar alle alten Module weiterhin ohne Einschränkung aber die Benutzung von CMS_VALUE als Variable bzw. mit variablem Index funktioniert nur im reglären Output, NICHT jedoch im INPUT und im EDITOR! Dazu müssen noch 3 weitere Dateien von Contenido in ähnlicher weise erweitert werden.
Leider kann ich jetzt nicht mehr aus dem Hut sagen, welche Dateien es waren; und nachsehen kann ich auch nicht, da ich Contenido nur auf meinem Firmen-PC installiert habe. Ich werde am Montag die Details posten.
Wer es auf eigene Faust versuchen möchte, der kann einfach alle php-Dateien von Contenido nach "CMS_VALUE" durchsuchen, und meine Erweiterungen aus Posting 1 an die Entprechende Stelle anpassen.
Aber wie gesagt: keien Panik an alle die die Erweiterung in der Aktuellen Version eingebaut haben; alle vorhandenen Module müssten ohne Probleme funktionieren - jedenfalls tun sie das bei mir.
Schönen Abend noch...
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Sorry, das es länger gedauert hat; aber hier nun die Änderungen noch mal komplett (alle zu ändernden Dateien befinden sich im Include-Verzeichnis):
für den Output und den Editor müssen die Dateien
functions.con.php (Zeile 1296) & include.con_editcontent.php (Zeile 490)
folgendermaßen geändert werden:
1.) vor der Zeile
folgendes einfügen:
2.) 10 Zeilen weiter unten den Block
ersetzen durch:
3.) die Zeile
ersetzen durch:
für den INPUT müssen nun noch die Dateien include.pretplcfg_edit_form.php (Zeile 119) und include.tplcfg_edit_form.php (Zeile 378) geändert werden:
Hier gibt es nur einen Schritt; der Block
wird ersetzt durch
und das war's auch schon...
das ganze mit CMS_HTML zu machen habe ich noch nicht versucht, werde aber gleich mal reinschauen, ob das machbar ist.
für den Output und den Editor müssen die Dateien
functions.con.php (Zeile 1296) & include.con_editcontent.php (Zeile 490)
folgendermaßen geändert werden:
1.) vor der Zeile
Code: Alles auswählen
$tmp1 = preg_split("/&/", $a_c[$value]);
Code: Alles auswählen
$a_c[$value] = preg_replace("/(&\$)/","", $a_c[$value]);
Code: Alles auswählen
foreach ($varstring as $key3=>$value3) {
$CiCMS_VALUE = "C".$key3."CMS_VALUE";
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$output = str_ireplace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = eregi_replace("(CMS_VALUE\[)([0-9]*)(\])", "", $output);
Code: Alles auswählen
$CiCMS_Var = '$C'.$value.'CMS_VALUE';
$CiCMS_VALUE = '';
foreach ($varstring as $key3=>$value3){
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$CiCMS_VALUE .= $CiCMS_Var.'['.$key3.']="'.$tmp.'"; ';
$output = str_replace("\$CMS_VALUE[$key3]", $tmp, $output);
$output = str_replace("CMS_VALUE[$key3]", $tmp, $output);
}
$output = str_replace("CMS_VALUE", $CiCMS_Var, $output);
$output = str_replace("\$".$CiCMS_Var, $CiCMS_Var, $output);
Code: Alles auswählen
$code = str_ireplace("CMS_CONTAINER[$value]", $output, $code);
Code: Alles auswählen
$code = str_replace("CMS_CONTAINER[$value]", "<?php $CiCMS_VALUE ?>\r\n".$output, $code);
für den INPUT müssen nun noch die Dateien include.pretplcfg_edit_form.php (Zeile 119) und include.tplcfg_edit_form.php (Zeile 378) geändert werden:
Hier gibt es nur einen Schritt; der Block
Code: Alles auswählen
foreach ($varstring as $key3=>$value3) {
$CiCMS_VALUE = "C".$key3."CMS_VALUE";
$CiCMS_VAR = "C".$key3."CMS_VAR";
$tmp = urldecode($value3);
$tmp = str_replace("\'","'",$tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$input = str_replace("CMS_VALUE[$key3]", $tmp, $input);
}
$input = str_replace("CMS_VAR", "C".$cnumber."CMS_VAR" , $input);
$input = ereg_replace("(CMS_VALUE\[)([0-9]*)(\])", "", $input);
ob_start();
eval($input);
Code: Alles auswählen
$CiCMS_Var = '$C'.$cnumber.'CMS_VALUE';
$CiCMS_VALUE = '';
foreach ($varstring as $key3=>$value3){
$tmp = urldecode($value3);
$tmp = str_replace("\'", "'", $tmp); // ' war das einzige Sonderzeichen was mit \ maskiert wurde. !?
$CiCMS_VALUE .= $CiCMS_Var.'['.$key3.']="'.$tmp.'"; ';
$input = str_replace("\$CMS_VALUE[$key3]", $tmp, $input);
$input = str_replace("CMS_VALUE[$key3]", $tmp, $input);
}
$input = str_replace("CMS_VALUE", $CiCMS_Var, $input);
$input = str_replace("\$".$CiCMS_Var, $CiCMS_Var, $input);
$input = str_replace("CMS_VAR", "C".$cnumber."CMS_VAR" , $input);
ob_start();
eval($CiCMS_VALUE." \r\n ".$input);
das ganze mit CMS_HTML zu machen habe ich noch nicht versucht, werde aber gleich mal reinschauen, ob das machbar ist.
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Also, ich habe mir die Sache mit dem CMS_HTML[$i] gerade mal angesehen und das gestaltet sich etwas schwieriger, als der Einbau von CMS_VALUE[$i], weil:
bei CMS_VALUE sind alle möglich Werte bereits in der DB abgelegt, da diese ja über die INPUT-Felder mit CMS_VAR eingegeben werden.
Damit man CMS_VALUE nun wie eine Variable benutzen kann, habe ich einfach einen String zusammengebastelt, der ein PHP-Array mit diesen Werten belegt; und alle anschließenden Vorkommen von "CMS_VALUE" mit dem Namen dieses Arrays ersetzt.
Da die Werte-Belegung von CMS_HTML aber nicht in dieser Weise im Vorfeld erfolgt, kann ich die Werte auch nicht so ohne Weiteres in ein Array schreiben.
Der einzige halbwegs brauchbare Weg um das Problem zu lösen wäre, wenn es möglich wäre den Quelltext für den Output-Bereich "Vorzuevaluieren" - also mit eval($code) - und dabei alles was normalerweise per echo an den Browser weitergegeben wird irgendwie abzufangen und nach "CMS_HTML" zu durchsuchen...
Da ich aber kein PHP-Spezie bin, weiß ich nicht, ob und wie eine soche Umleitung der Ausgabe machbar ist.
Wäre nett, wenn mir irgendjemand anders diesbezüglich einen Tip geben könnte.
bei CMS_VALUE sind alle möglich Werte bereits in der DB abgelegt, da diese ja über die INPUT-Felder mit CMS_VAR eingegeben werden.
Damit man CMS_VALUE nun wie eine Variable benutzen kann, habe ich einfach einen String zusammengebastelt, der ein PHP-Array mit diesen Werten belegt; und alle anschließenden Vorkommen von "CMS_VALUE" mit dem Namen dieses Arrays ersetzt.
Da die Werte-Belegung von CMS_HTML aber nicht in dieser Weise im Vorfeld erfolgt, kann ich die Werte auch nicht so ohne Weiteres in ein Array schreiben.
Der einzige halbwegs brauchbare Weg um das Problem zu lösen wäre, wenn es möglich wäre den Quelltext für den Output-Bereich "Vorzuevaluieren" - also mit eval($code) - und dabei alles was normalerweise per echo an den Browser weitergegeben wird irgendwie abzufangen und nach "CMS_HTML" zu durchsuchen...
Da ich aber kein PHP-Spezie bin, weiß ich nicht, ob und wie eine soche Umleitung der Ausgabe machbar ist.
Wäre nett, wenn mir irgendjemand anders diesbezüglich einen Tip geben könnte.
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
So, also ich habe mich mal im I-Net umgesehen, und eine Möglichkeit gefunden die echo's mittels Output Buffering und der Funktionen ob_start, ob_get_contents und ob_end_clean abzufangen, also müsste auch ein CMS_HTML[$i] realisierbar sein.
Ich werde mich im Laufer der nächsten Tage mal daran versuchen.
Außerdem könnte man versuchen den letztendlich ausgegebenen HTML-Code (für ein einzelnes Modul oder sogar für die komplette Seite) ebenfalls mittels dieser Funktionen abzufangen und somit nicht nur den Code zu cachen - wie es ja in der Tabelle con_code schon gemacht wird - sonderen gleich das "Endprodukt"; wobei man bspw. Counter-Module von sowas natürlich ausnehmen müsste.
Werde mich in den nächten Tagen auch mal etwas mit diesem Punkt beschäftigen, hab da schon so'n paar Ideen wie man das realisieren könnte...
Ich werde mich im Laufer der nächsten Tage mal daran versuchen.
Außerdem könnte man versuchen den letztendlich ausgegebenen HTML-Code (für ein einzelnes Modul oder sogar für die komplette Seite) ebenfalls mittels dieser Funktionen abzufangen und somit nicht nur den Code zu cachen - wie es ja in der Tabelle con_code schon gemacht wird - sonderen gleich das "Endprodukt"; wobei man bspw. Counter-Module von sowas natürlich ausnehmen müsste.
Werde mich in den nächten Tagen auch mal etwas mit diesem Punkt beschäftigen, hab da schon so'n paar Ideen wie man das realisieren könnte...
dynamische CMS_VARS
hallo,
spiele mich grad mit der 452 alpha herum und will/muss auch dynamische CMS_VARS erzeugen.
geht das nicht einfacher, sauberer, als so?
lg wenzel
spiele mich grad mit der 452 alpha herum und will/muss auch dynamische CMS_VARS erzeugen.
geht das nicht einfacher, sauberer, als so?
Code: Alles auswählen
for ($i=0; $i <= count($mediaTypes); $i++){
echo '<select name="CMS_VAR['.$i.']">';
echo "<option value='0'>-- kein --</option>\n";
foreach ($mediaTypes as $media=>$key){
("$CMS_VALUE[$i]" == $media ) ? $sel = " selected='selected' " : $sel = "";
echo "<option value='". $media."' $sel>$key</option>\n";
}
echo "</select>";
echo "<br />";
}
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Hi, Sorry für die späte Antwort -
hab hier schon ne Weile nicht mehr rein geschaut, da ich zur Zeit Hauptsächlich an einem anderen Projekt Arbeite...
Na egal...
Zu deiner Frage:
Evtl. steh ich ja etwas auf dem Schlauch, aber was genau willst du denn überhaupt machen?
Bzw. In welcher Hinsicht willst du das ganze sauberer/einfachen haben?
MfG Daniel
hab hier schon ne Weile nicht mehr rein geschaut, da ich zur Zeit Hauptsächlich an einem anderen Projekt Arbeite...
Na egal...
Zu deiner Frage:
Evtl. steh ich ja etwas auf dem Schlauch, aber was genau willst du denn überhaupt machen?
Bzw. In welcher Hinsicht willst du das ganze sauberer/einfachen haben?
MfG Daniel
Hi Daniel,
Aber weil du grad da bist:
Hast du an dem CMS_HTML[x] zufällig was weitergebastelt?
Ciao
Wenzel
Mir kam der Code nicht ganz sauber vor, aber egal, inzwischen kratzt mich das auch nimmerDRothmaler hat geschrieben: Evtl. steh ich ja etwas auf dem Schlauch, aber was genau willst du denn überhaupt machen?
Bzw. In welcher Hinsicht willst du das ganze sauberer/einfachen haben?
MfG Daniel
Aber weil du grad da bist:
Hast du an dem CMS_HTML[x] zufällig was weitergebastelt?
Ciao
Wenzel
-
- Beiträge: 11
- Registriert: Di 9. Mär 2004, 16:33
- Wohnort: Dresden
- Kontaktdaten:
Hi Wenzel,
Hatte die Idee mit dem Output Buffering zwar damals mal angetestet,
aber das hatte irgendwie nicht so funktioniert, wie es sollte...
Hab mir das ganze aber gerade nochmal kurz angesehen, und da kam mir der Gedanke,
das man aus den CMS_xxxxx[Zahl] Platzhaltern evtl. ja auch Funktionen basteln könnte...
Aber ich habe im Moment keine Ahnung, wann ich dazu komme das zu testen...
Mal sehen ob sich am WE etwas Zeit dafür findet...
Wenn ich da noch was hinbekomme, dann sag ich Bescheid...
MfG Daniel
Nein, da bin ich leider noch nicht weiter gekommen...wewo hat geschrieben: Aber weil du grad da bist:
Hast du an dem CMS_HTML[x] zufällig was weitergebastelt?
Hatte die Idee mit dem Output Buffering zwar damals mal angetestet,
aber das hatte irgendwie nicht so funktioniert, wie es sollte...
Hab mir das ganze aber gerade nochmal kurz angesehen, und da kam mir der Gedanke,
das man aus den CMS_xxxxx[Zahl] Platzhaltern evtl. ja auch Funktionen basteln könnte...
Aber ich habe im Moment keine Ahnung, wann ich dazu komme das zu testen...
Mal sehen ob sich am WE etwas Zeit dafür findet...
Wenn ich da noch was hinbekomme, dann sag ich Bescheid...
MfG Daniel
ich hätte noch folgenden ansatz, der vielleicht weiterhelfen wird:
(1) neuen platzhaltertyp erstellen. z.b. $myVariable[X].
(2) die ganze variable $myVariable mit wddx_serialzie() serialisieren und als CMS_VAR[0] direkt in der datenbank speichern.
(3) im outputbereich steht dann mit CMS_VALUE[0] die variable, resepktive die variablen serialisiert zur verfügung und können mit wddx_deserialize() in den kontext zurück geholt werden und stehen anschliessend wieder als $myVariable[X] zur verfügung.
dafür wird bloss eine klasse benötigt, welche die daten serialisiert und an die richtige stelle im db-system speichert. alternativ könnte das script auch nur die serialisierung vornehmen und den string in ein textfeld geben. dann wäre aber jeweils zweimal zu speichern. eigentlich sollte man das allerdings vermeiden. aber dann geht es halt nicht mehr mit den bordmitteln von contenido.
auf diese weise liessen sich alle arten von konfigurationswerten speichern. also nicht ausschliesslich skalare, sonder auch komplexe werte wie objekte oder arrays. und die platzhalter müssten nicht mit einer regexprüfung extrahiert werden.
z.b. myVariable[einVariablenBezeichner][keyAssoziativ][0] lässt sich genau so speichern wie z.b. ein einfaches array myVariable[0].
innerhalb des outputscripts ist lediglich...
auszuführen, um die variablen allesamt wieder zur verfügung zu haben.
hope this helps!
gruss,
andreas
(1) neuen platzhaltertyp erstellen. z.b. $myVariable[X].
(2) die ganze variable $myVariable mit wddx_serialzie() serialisieren und als CMS_VAR[0] direkt in der datenbank speichern.
(3) im outputbereich steht dann mit CMS_VALUE[0] die variable, resepktive die variablen serialisiert zur verfügung und können mit wddx_deserialize() in den kontext zurück geholt werden und stehen anschliessend wieder als $myVariable[X] zur verfügung.
dafür wird bloss eine klasse benötigt, welche die daten serialisiert und an die richtige stelle im db-system speichert. alternativ könnte das script auch nur die serialisierung vornehmen und den string in ein textfeld geben. dann wäre aber jeweils zweimal zu speichern. eigentlich sollte man das allerdings vermeiden. aber dann geht es halt nicht mehr mit den bordmitteln von contenido.
auf diese weise liessen sich alle arten von konfigurationswerten speichern. also nicht ausschliesslich skalare, sonder auch komplexe werte wie objekte oder arrays. und die platzhalter müssten nicht mit einer regexprüfung extrahiert werden.
z.b. myVariable[einVariablenBezeichner][keyAssoziativ][0] lässt sich genau so speichern wie z.b. ein einfaches array myVariable[0].
innerhalb des outputscripts ist lediglich...
Code: Alles auswählen
wddx_deserialize("CMS_VALUE[0]");
hope this helps!
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)