Modul mehrfach verwenden

Gesperrt
matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

Modul mehrfach verwenden

Beitrag von matze » Mo 2. Feb 2004, 17:17

hallo,

ich habe mir gerade eine modul gebastelt, dass aus einem bild (links) und einem text (rechts) besteht.
beide sind in einer zeile angeordnet. (<tr><td> ... CMS_IMG[1] ... </td><td> ... CMS_TEXT[1] ... </tr>)

nun möchte ich erreichen, dass man im backend für jeden artikel individuell einstellen kann, wieviel solcher zeilen (in meinem fall: 1-20) zugeschaltet werden sollen.

realisieren könnte man es wohl am besten, wenn man im INPUT ein pulldown-menü mit auswahlmöglichkeiten 1 bis 20 erzeugt.
aber wie erzeugt man mit diesem wert eine schleife im OUTPUT?

wäre dankbar für einen ansatz,
matze

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Di 3. Feb 2004, 10:05

Nein das geht nicht, denn die Werte für die CMS-Tags werden vor Ausfühung des Codes gesetzt. Du kannst aber sicher mal folgendes verwenden:
$cms_img[1]="CMS_IMG[1]";
$cms_img[2]="CMS_IMG[2]";
$cms_img[3]="CMS_IMG[3]";
$cms_img[4]="CMS_IMG[4]";
...

So könntest du das ganze per Schleife ansprechen. Ich mache es halt immer so, das ich lokal ein Skript habe, welches mir die komplexeren CMS-Wiederholungen generiert.

matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

Beitrag von matze » Di 3. Feb 2004, 18:11

mhhh,
ganz habe ich deinen lösungsvorschlag nicht verstanden. aber er läuft anscheinend darauf hinaus, dass ich alle 20 absätze in ein modul packen muss und jedes element auch einzeln definieren muss. oder?

und um nur nochmal sicherzugehen:
so kann man es also nicht machen?

Code: Alles auswählen

// INPUT
echo 'Anzahl der Absätze:';
echo("<input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\">");

// OUTPUT
$anz = "CMS_VALUE[0]";
while($anz > 1) {
...
echo "CMS_HTML[$anz]";
$anz = $anz--;
...

}

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Di 3. Feb 2004, 23:12

Nein, so geht es eben nicht, du kannst nicht dynamisch (CMS_HTML[$anz]) auf ein CMS-Tag zugreifen. Wenn schon so:

Code: Alles auswählen

// INPUT
echo 'Anzahl der Absätze:';
echo("<input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\">");

// OUTPUT
$anz = "CMS_VALUE[0]";

if ($anz>=1)
 echo "CMS_HTML[1]";

if ($anz>=2)
 echo "CMS_HTML[2]";

if ($anz>=3)
 echo "CMS_HTML[3]";

if ($anz>=4)
 echo "CMS_HTML[4]";

...

matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

Beitrag von matze » Mi 4. Feb 2004, 10:41

ok, jetzt hat's klick gemacht! danke!

iss zwar nicht wirklich eine elegante variante, aber wenigstens kann ich jetzt alle absätze in ein modul stopfen!

matze

imu
Beiträge: 26
Registriert: Fr 24. Dez 2004, 22:06
Kontaktdaten:

Beitrag von imu » Mi 27. Apr 2005, 18:36

... und wenn man in die Verlegenheit kommt, ein solches Modul innerhalb eines Templates mehrfach einsetzen zu wollen, dann geht dieses so:

Code: Alles auswählen

// INPUT
echo 'Anzahl der Absätze:';
echo("<input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\">");
echo '<br>Modul-Nr.:';
echo("<input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\">");



// OUTPUT
$anz = "CMS_VALUE[0]";

if ($anz>=1)
 echo "CMS_HTML[CMS_VALUE[1]1]";

if ($anz>=2)
 echo "CMS_HTML[CMS_VALUE[1]2]";

if ($anz>=3)
 echo "CMS_HTML[CMS_VALUE[1]3]";

if ($anz>=4)
 echo "CMS_HTML[CMS_VALUE[1]4]";

...
Nur noch in der Konfiguration des Templates die Modulnummern
vergeben, und schon spielt es.

Man muß sich nur zu helfen wissen. :wink:
"Unsere Lösung - Ihr Problem"

Chopper
Beiträge: 108
Registriert: Mi 9. Feb 2005, 17:09
Wohnort: Berlin
Kontaktdaten:

Beitrag von Chopper » Do 28. Apr 2005, 10:10

ah, das letze mit der konfiguration und Modulnummern ist gut ...
kann ich auch brauchen ;)

matze
Beiträge: 106
Registriert: Mi 17. Dez 2003, 00:17
Wohnort: L.E.
Kontaktdaten:

Beitrag von matze » Do 28. Apr 2005, 13:12

kleiner Tipp von meiner Seite:
Das Eingabefeld mit der Modul-Nummer kann man auch "verstecken"!

Code: Alles auswählen

echo '<input name="CMS_VAR[1]" type="hidden" value="'.$cnumber.'">';
// "$cnumber" entspricht der Container-Nummer 
// optional könnte hier auch "$value", d.h. die Modul-ID eingesetzt werden

micattack
Beiträge: 28
Registriert: Fr 14. Nov 2003, 13:31
Kontaktdaten:

Beitrag von micattack » Do 8. Sep 2005, 16:26

Ich habe auch grad was nettes "programmiert" und wollte es mit euch teilen.
Da, wenn man so eine Umstellung nachträglich macht, die Variable noch nicht befüllt ist, habe ich folgendes:
Funktioniert auch mit mehrmaliger Erwähnung in einem Template


Ausgabe:
<?php
if( "CMS_VALUE[0]" == "" )
{
echo "CMS_HTML[1]";
} else {
echo "CMS_HTML[CMS_VALUE[0]]";
}
?>

Eingabe:
echo "<table>";
$num= "CMS_VALUE[0]";
if(! $num) { $num = "1"; }
echo "<tr><td>Nummer</td>
<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"$num\"></td>
</tr>";
echo "</table>";

Gesperrt