Modulvariablen werden nicht übernommen

ThomasEckel
Beiträge: 20
Registriert: Do 13. Sep 2007, 18:20
Wohnort: Hamburg
Kontaktdaten:

Modulvariablen werden nicht übernommen

Beitrag 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:

Code: Alles auswählen

echo CMS_VALUE[0];
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

Code: Alles auswählen

echo "Code:".CMS_VALUE[0];
schreibe, erscheint an der entsprechenden Stelle das Wort "Code:".

Was läuft da falsch?
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag von kummer »

du musst die variablen in doppelte anführungszeichen setzen. sonst werden diese nicht ersetzt.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
ThomasEckel
Beiträge: 20
Registriert: Do 13. Sep 2007, 18:20
Wohnort: Hamburg
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag von ThomasEckel »

Habe ich ausprobiert:

Code: Alles auswählen

echo "CMS_VALUE[0]";
hat leider nichts gebracht. Würde mich auch wundern.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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;
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
ThomasEckel
Beiträge: 20
Registriert: Do 13. Sep 2007, 18:20
Wohnort: Hamburg
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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:

Code: Alles auswählen

$variable2 = "$variable1";
ergibt das selbe wie

Code: Alles auswählen

$variable2 = $variable1;
und

Code: Alles auswählen

$variable2 = "Text $variable1";
ergibt das selbe wie

Code: Alles auswählen

$variable2 = 'Text '.$variable1;
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.
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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 ;-)
Zuletzt geändert von idea-tec am Di 3. Mär 2009, 13:53, insgesamt 1-mal geändert.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Dinkel
Beiträge: 565
Registriert: Di 22. Mär 2005, 14:52
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
selbstentwickelte Module:
Downloads und Infos zu den Modulen: gibt es hier.
Modul: Forum | Version 0.9 | getestet: 4.6.24 MR, 4.8.11, 4.8.11 AMR
Modul: Galleriffic | Version: 0.3.4 BETA | getestet: 4.8.11, 4.8.11 AMR, 4.8.12, 4.8.12 AMR
Modul: Metadata | Version: 2.0 | getestet: 4.9.7, 4.9.7 AMR
Modul: Slider Gallery | Version: 1.0 | getestet: 4.9.12 AMR
Modul: Up- & Download | Version: 4.1 | getestet: 4.9.12 AMR
ThomasEckel
Beiträge: 20
Registriert: Do 13. Sep 2007, 18:20
Wohnort: Hamburg
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
GaMbIt_
Beiträge: 674
Registriert: Do 16. Mär 2006, 16:17
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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

Code: Alles auswählen

CMS_VALUE[0]
funktionieren...
Nützliche Contenido Infos gibts hier: Contenido Wiki
GaMbIt_
Beiträge: 674
Registriert: Do 16. Mär 2006, 16:17
Kontaktdaten:

Re: Modulvariablen werden nicht übernommen

Beitrag 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:

Code: Alles auswählen

CMS_VALUE[0]
und... funktioniert...
Nützliche Contenido Infos gibts hier: Contenido Wiki
Gesperrt