Modul mehrfach verwenden
Modul mehrfach verwenden
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
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
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.
$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.
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?
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--;
...
}
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]";
...
... und wenn man in die Verlegenheit kommt, ein solches Modul innerhalb eines Templates mehrfach einsetzen zu wollen, dann geht dieses so:
Nur noch in der Konfiguration des Templates die Modulnummern
vergeben, und schon spielt es.
Man muß sich nur zu helfen wissen.
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]";
...
vergeben, und schon spielt es.
Man muß sich nur zu helfen wissen.
"Unsere Lösung - Ihr Problem"
kleiner Tipp von meiner Seite:
Das Eingabefeld mit der Modul-Nummer kann man auch "verstecken"!
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
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>";
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>";