wie funktioniert das include von module

Gesperrt
donny
Beiträge: 11
Registriert: Mo 24. Nov 2003, 19:21
Kontaktdaten:

wie funktioniert das include von module

Beitrag von donny »

Hallo,
kann mir jemand sagen, wie eigentlich das include von module in das layout funktioniert ?
Ich stelle mir vor, dass das Layout einfach ge-echo-ed wird und dann an der Stelle wo z.B. CMS_CONTAINER[x] steht einfach durch das Inhalt vom Module ersetzt wird. Aber wenn das Module selbst PHP Code enthält dann kann das ja nicht ge-echo-ed. Wie funktioniert das eigentlich im Hintergrund, so dass PHP Code, das von einer Datenbank eingelesen wird ausgeführt werden kann ?
Danke.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

das ausführen erfolgt mittels -> eval
siehe http://at.php.net/manual/en/function.eval.php

grundsätzlicher ablauf:

1. innerhalb der konfigurierten module wird zu allererst CMS_VALUE durch den konfigurationswert ersetzt...
2. anschließend werden die module in dem entsprechenden layout eingebettet
3. anschließend werden die cms_type platzhalter ersetzt
4. code wird in der con_code hinterlegt
5. gesamter code wird in der front_content bei aufruf evaluiert
*** make your own tools (wishlist :: thx)
donny
Beiträge: 11
Registriert: Mo 24. Nov 2003, 19:21
Kontaktdaten:

Beitrag von donny »

1. innerhalb der konfigurierten module wird zu allererst CMS_VALUE durch den konfigurationswert ersetzt...
2. anschließend werden die module in dem entsprechenden layout eingebettet
3. anschließend werden die cms_type platzhalter ersetzt
4. code wird in der con_code hinterlegt
5. gesamter code wird in der front_content bei aufruf evaluiert
Da ich jetzt nicht weiss was con_code ist :oops:.Was wird in Schritt 2 genau gemacht ? Wird da das PHP Code von dem Module in das Layout hingeschrieben ? kann ich es mir wie folgt vorstellen ?

Code: Alles auswählen

$layout = ".... CMS_CONTAINER[2] ...";
$mod = "<?php echo "X"; ?>;
$seite = str_replace("CMS_CONTAINER[2]",$mod,$layout);
Aber wenn es so ist, und dann nacher sage ich :

Code: Alles auswählen

eval($seite);
geht doch eigentlich nicht oder ?
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

zuerst werden die CMS_VAR, respektive CMS_VALUE in den modulen durch die konfigurierten werte ersetzt. dann werden gemäss deinen angaben im template die module in das layout eingepflegt. das ganze ergibt dann ein html-php-gemisch. dieses wird in der con_code gespeichert und bei einem seitenaufruf mit eval interpretiert und die ausgabe an die standardausgabe ausgegeben.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
donny
Beiträge: 11
Registriert: Mo 24. Nov 2003, 19:21
Kontaktdaten:

Beitrag von donny »

verstehe ich das richtig, dass in con_code sozusagen eine Temporäreseite erzeugt wird, wo das Html-Code von layout auch schon mit echo versehen wird ?
Mein Problem ist eigentlich, man kann ja so was nicht ausgeben oder ?

Code: Alles auswählen

eval("<html><body><?php echo \"x\"; ?></body></html>");
oder anders gesagt, kannst du vielleicht ein einfaches Beispiel geben, wie das Inhalt von con_code aussieht, so dass man es mit eval interpretiern kann ?
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

donny hat geschrieben:kann ich es mir wie folgt vorstellen ?

Code: Alles auswählen

$layout = ".... CMS_CONTAINER[2] ...";
$mod = "<?php echo "X"; ?>;
$seite = str_replace("CMS_CONTAINER[2]",$mod,$layout);
Aber wenn es so ist, und dann nacher sage ich :

Code: Alles auswählen

eval($seite);
geht doch eigentlich nicht oder ?
fast...

eval erwartet aber php code

Code: Alles auswählen

eval(" ?".">".$seite."<"."?php ");
müsste gehen...
*** make your own tools (wishlist :: thx)
donny
Beiträge: 11
Registriert: Mo 24. Nov 2003, 19:21
Kontaktdaten:

Beitrag von donny »

eval erwartet aber php code

Code: Alles auswählen

Code:
eval(" ?".">".$seite."<"."?php ");
müsste gehen...
Leider geht es nicht.
Sogar wenn in der Variable $seite nur "blablabla" steht, wird es nicht angezeigt.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

also das ist sowieso falsch

Code: Alles auswählen

$mod = "<?php echo "X"; ?>; 
folgendes müsste schon eher funktionieren...

Code: Alles auswählen

$mod = "<"."?php echo \"X\"; ?".">"; 
wenn du schreibst es geht was nicht... -> dann bitte mit genauer fehlermeldung...

gesamter code sieht dann eigentlich so aus

Code: Alles auswählen

<?php

$layout = ".... CMS_CONTAINER[2] ...";
$mod = "<"."?php echo \"X\"; ?".">";
$seite = str_replace("CMS_CONTAINER[2]",$mod,$layout);


eval(" ?".">".$seite."<"."?php ");

?>
*** make your own tools (wishlist :: thx)
donny
Beiträge: 11
Registriert: Mo 24. Nov 2003, 19:21
Kontaktdaten:

Beitrag von donny »

Danke für die schnelle Antwort emerge.
ich habe das Problem jetzt vereinfacht, indem ich keine Module mehr benutze, sondern habe jetzt direkt das PHP Code auf der Seite geschrieben. Und mit deinem eval(" ?".">".$seite."<"."?php "); geht es jetzt.
Super Danke vielmals :D
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

wenn das eine vereinfachung ist... :roll:
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Gesperrt