Seite 1 von 1

CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 09:36
von Ginche
Hallo,

ich bin kein PHP Programmierer und kann mir selbst nicht den Unterschied erklären:

Ich habe CMS_IMG[1], ...[2]...[3] usw. für mehrere Bilder auf einer Seite vorgesehen. Das alles habe ich in einer SWITCH eingepackt, was nicht effizient ist.

if (isset($modul_nr)) $modul_nr++;
else $modul_nr = 1;

if (....//Bedingung) {
switch($modul_nr){
case 1:
echo "CMS_IMG[1]";
break;
case 2:
echo "CMS_IMG[2]";
break; ......

Ich weiss am Anfang nicht, wieviel Bilder zukünftig auf einer Seite vorkommen werden. Jetzt füge ich 10 cases ein. Meine Frage, wieso kann ich nicht den Index als Variable erhöhen, z.B. $modul_nr++ und CMS_IMG[$modul_nr] schreiben? Wieso wird nicht der Inhalt von CMS_IMG[$modul_nr] verstanden sondern selber String "CMS_IMG[1]", obwohl die Variable $modul_nr richtig ersetzt wird?

Danke für Aufklärung
Gruß Ginche

Wo ist hier meiner Denkfehler?

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 09:56
von thepoet
Die CMS_IRGENDWAS Platzhalter sind keine Variablen sondern Texte die im Quelltext ersetzt werden bevor der Modulcode selbst ausgeführt wird.

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 11:01
von Ginche
Danke. Und wie kann ich dann diese Platzhalte automatisch durchnummerieren, je nach dem wie oft ich das Modul aufrufe?

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 14:57
von thepoet
Richtig schön nicht, vielleicht eine Spur eleganter:

Code: Alles auswählen

$imgs = array( "CMS_IMG[1]", ""CMS_IMG[2]", "CMS_IMG[3]", "CMS_IMG[4]", "CMS_IMG[5]", "CMS_IMG[6]", "CMS_IMG[7]", ... );
$modul_nr = isset($modul_nr) ? $modul_nr + 1: 0;
echo $imgs[$modul_nr];

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 15:47
von Ginche
Vielen Dank! also so ist es natürlich kürzer als meine Lösung :) nur dass ich trotzdem die feste Angabe der Platzhalte definieren muss :(

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Mi 30. Sep 2009, 19:03
von Oldperl
Hallo Ginche,

das hier :arrow: http://forum.contenido.org/viewtopic.ph ... 36#p130136
und das hier :arrow: http://www.contenido-wiki.org/wiki/inde ... atzhaltern
hast du sicher bereits gelesen.

Gruß aus Franken

Ortwin

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Di 27. Okt 2009, 09:34
von Ginche
So...ich habe mir die Links angeschaut und versucht diese Funktion einzusetzen aber... ich verstehe nicht, wo ich diese Fubnktion einfüge? Zu jedem Modul, wie Picture, Text, Headline usw. oder kann man einmal sie in externe Datei auslagern und von jedem beliebigen Modul diese Funktion aufrufen? Kann mir jemand das genau erklären, bitte? und mit dem Aufruf...soll make_cms_type("CMS_HTML","1"); Index dynamisch erhöht werden also make_cms_type("CMS_HTML",$modul_nr);.....ich verstehe den Zusammenhang wirklich nicht, von PHP hab leider auch keine Ahnung :(

Ich wäre sehr dankbar für die Hilfe :cry:

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Di 27. Okt 2009, 16:46
von thepoet
Am besten legst Du sie eine neue Datei in contenido/includes an, z.B. contenido/includes/functions.eigene.php, in die Du den Code einfügst (die üblichen Dinge wie keine Zeichen nach dem schließenden php-Tag beachten) und fügst dann in der config.local.php eine Include-Zeile dafür ein (falls diese noch nicht existiert, auch neu anlegen):

Code: Alles auswählen

cInclude('includes', 'functions.eigene.php');
Dann brauchst du zur Ausgabe nur noch

Code: Alles auswählen

make_cms_type("CMS_HTML", $modul_nr);
im Modul-Output aufrufen.

Re: CMS_IMG[$var] mit Variable ersetzen

Verfasst: Sa 28. Nov 2009, 18:33
von almighty7
Ich habe wie beschrieben die Dateien eingehängt, aber in meinem Contenido 4.8 läuft es nicht. Im editiermodus werden die Variablen nicht gesetzt...