Seite 1 von 2
Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 11:24
von ThomasEckel
Hallo,
ich will ein kleines Modul bauen, welches mir ermöglicht kleine Codeschnipsel z.B. für Werbung oder Tracking in das Template einzubauen. Ich habe also die Eingabe und Ausgabe folgendermaßen programmiert:
Eingabe:
Code: Alles auswählen
<table border="0">
<tr>
<td><?php echo mi18n("HTML-Code:");?></td>
<td><textarea name="<?php echo "CMS_VAR[0]";?>" cols="30" rows="7"><?php echo "CMS_VALUE[0]"; ?></textarea></td>
</tr>
</table>
Ausgabe:
Während im Eingabeformular das Textarea korrekt mit der letzten Befüllung dargestellt wird, bleibt die entsprechende Stelle in der Webdarstellung leer. Offenbar liefert die Variable CMS_VALUE[0] dort keinen Wert zurück, denn wenn ich
schreibe, erscheint an der entsprechenden Stelle das Wort "Code:".
Was läuft da falsch?
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 11:29
von kummer
du musst die variablen in doppelte anführungszeichen setzen. sonst werden diese nicht ersetzt.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 11:48
von ThomasEckel
Habe ich ausprobiert:
hat leider nichts gebracht. Würde mich auch wundern.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 12:11
von idea-tec
schau doch z.B. einfach mal in ein vorhandenes Modul, das eigentlich das tut, was du auch haben möchtest -> "Headline".
Nun ist es natürlich vollkommen klar, dass <<echo "CMS_VALUE[0]"; mal GAR nix bringen kann oder? Ich bin erstaunt, dass du es trotzdem versucht hast.
Also ganz simpel:
- Erst die Modulvariable in eine "echte" Variable packen ->
Code: Alles auswählen
$irgendeinevariable = "CMS_VALUE[0]";
echo $irgendeinevariable;
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 12:57
von kummer
idea-tec hat geschrieben:Erst die Modulvariable in eine "echte" Variable packen
das ist mit sicherheit nicht notwendig. das problem liegt vermutlich eher beim input-bereich, würde ich mal vermuten.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:02
von idea-tec
mir ist halt aufgefallen, dass in ALLEN Beispielmodulen die CMS_Variablen IMMER erst zur Verarbeitung in eine "Variable" gepackt werden.
Irgend ein Grund muss das ja haben. ich finde es sogar schlüssig.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:05
von kummer
das geschieht nicht überall so. letztlich werden die auftreten der form CMS_XYZ[X] im code einfach ersetzt. insofern spielt es keine rolle, ob diese zunächst einer variable zugewiesen werden oder mit echo direkt ausgegeben werden. der mechanisnums ist einigermassen - wenn das an dieser stelle erlaubt ist zu sagen - primitiv. soweit ich weiss, muss sich der platzhalter allerdings in anführungszeichen befinden. aber diesbezüglich bin ich mir nicht sicher.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:07
von ThomasEckel
Ich habe mich an Text_HTML orientiert:
Code: Alles auswählen
echo "<div id=\"cms_html_1\">"."CMS_HTML[1]"."</div>";
Im Übrigen habe ich den Beispielcode ausprobiert:
Code: Alles auswählen
$irgendeinevariable = "CMS_VALUE[0]";
echo $irgendeinevariable;
Und es geht immer noch nicht. Es würde mich auch wundern, schließlich kenne ich PHP: In doppelten Anführungszeichen stehende Variablen werden ausgewertet im Gegensatz zu in einfachen Anführungszeichen stehende:
ergibt das selbe wie
und
ergibt das selbe wie
Insofern steckt in den Anführungszeichen überhaupt keine Magie. Die Variable CMS_VALUE[0] scheint zu dem Zeitpunkt definitiv leer zu sein.
Der Inputbereich scheint in Ordnung zu sein. Ein im Eingabebereich eingegebener Text erscheint beim erneuten Aufruf der Eingabemaske wieder. Das heißt: Die Daten werden definitiv gespeichert.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:30
von kummer
platzhalter sind keine variablen von php. das hat überhaupt nichts miteinander zu tun. die platzhalter werden durch ein preg_replace mit dem wert ersetzt, den diese aufweisen. die anführungszeichen sind nicht magisch, sondern fehlen einfach, wenn sie sich nicht auch im wert finden, mit dem der platzhalter ersetzt wird.
echo CMS_VALUE[0];
müsste demnach einfach zu einem fehler führen, wenn CMS_VALUE[0] durch z.B. 'das ist ein test' ersetzt werden würde. weil dann würden wir erhalten:
echo das ist ein test;
was in php zwingend zu einem fehler führen müsste.
dein problem liegt nicht im output, sondern im input-bereich des modules. im input-bereich werden die platzhalter ausserhalb von php ersetzt. du brauchst eben kein echo dafür. dort könnte nach meiner einschätzung das problem liegen.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:38
von idea-tec
Ja, das denke ich auch, war gerade dabei dieses für den Inputbereich zu formulieren:
Code: Alles auswählen
?>
<table border="0">
<tr>
<td>HTML-Code:</td>
<td><textarea name="<?php echo "CMS_VAR[0]";?>" cols="30" rows="7"><?php echo "CMS_VALUE[0]";?></textarea></td>
</tr>
</table>
<?php
Da ich denke, dass er ZUVOR "php" NICHT geschlossen und DANACH auch nicht wieder geöffnet hat!
Wäre dies möglich?
Zusatz: Grundlage der Tabelle und CMS_VAR ist 1zu1 aus dem unveränderten Contact_Form der Standardinstallation kopiert.
Wenn ich das nun auch noch zu prüfen anfange, ob man das "muss" oder nciht ... jemine, dann haben wir alle dauernd was zu tun

Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 13:49
von Dinkel
Ja, das mag sein. Dennoch kannst Du es auch so versuchen - so würde ich es machen:
Code: Alles auswählen
$value0="CMS_VALUE[0]";
?>
<table border="0">
<tr>
<td>HTML-Code:</td>
<td><textarea name="CMS_VAR[0]" cols="30" rows="7"><?php echo $value0;?></textarea></td>
</tr>
</table>
<?php
CMS_VAR[0] musst Du nicht per echo als Name vergeben.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 15:01
von ThomasEckel
Die PHP-Tags habe ich im Input-Bereich in meinem Code drin. Ich habe sie nur im Zitat weggelassen um Zeilen zu sparen.
Auch möchte ich darauf hinweisen, dass der Input-Bereich funktioniert. Das Eingabefeld erscheint, und ich kann dort Text eingeben. Wenn ich den Browser schließe und wieder den Input-Bereich aufsuche, erscheint im richtigen Eingabefeld der dort zuletzt eingegebene Text. Daher gehe ich davon aus, dass der eingegebene Text korrekt in der Datenbank abgelegt worden ist, und im Eingabebereich auch korrekt ausgelesen wird. Erst im Ausgabebereich ist CMS_VALUE[0] dann leer.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 15:12
von idea-tec
dann bin ich an der stelle ratlos.
ich würde, nur weil ich contenido schon jahre kenne, einfach mal kurz noch folgendes ausprobieren:
- das entsprechende template aufrufen und auf "speichern" klicken
- die kategorie aufrufen, in die template-konfig gehen
- irgendein anderes template auswählen und speichern
- das entsprechende template wieder zuordnen und speichern
- eintrag noch einmal machen, falls er nicht mehr vorhanden sein sollte.
ich habe eine installation da verliert er mir bei neuen kategorien manchmal irgendwelche inhalte, jedes 2te mal hilft der oben beschriebene workaround.
vielleicht hat einfach irgendwo irgendwas nicht so richtig zugeordnet oder was auch immer.
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 15:30
von GaMbIt_
Ist der Output Bereich nicht generell erst mal HTML Bereich und muss dann erst mit PHP Tags PHP-fähig gemacht werden?
IMO würde allein schon
funktionieren...
Re: Modulvariablen werden nicht übernommen
Verfasst: Di 3. Mär 2009, 15:42
von GaMbIt_
Sodele... mein unüberlegtes Gefasel von vorhin ist nun bestätigt... ich habe ein Modul angelegt... das nannte ich Testmodul, hab das sogleich einem Template zugeordnet...
Input:
Code: Alles auswählen
?>
<table border="0">
<tr>
<td><?php echo mi18n("HTML-Code:");?></td>
<td><textarea name="<?php echo "CMS_VAR[0]";?>" cols="30" rows="7"><?php echo "CMS_VALUE[0]"; ?></textarea></td>
</tr>
</table>
<?php
Output:
und... funktioniert...