wie funktioniert das include von module
wie funktioniert das include von module
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.
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.
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
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)
Da ich jetzt nicht weiss was con_code ist1. 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

Code: Alles auswählen
$layout = ".... CMS_CONTAINER[2] ...";
$mod = "<?php echo "X"; ?>;
$seite = str_replace("CMS_CONTAINER[2]",$mod,$layout);
Code: Alles auswählen
eval($seite);
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)
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 ?
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 ?
Mein Problem ist eigentlich, man kann ja so was nicht ausgeben oder ?
Code: Alles auswählen
eval("<html><body><?php echo \"x\"; ?></body></html>");
fast...donny hat geschrieben:kann ich es mir wie folgt vorstellen ?Aber wenn es so ist, und dann nacher sage ich :Code: Alles auswählen
$layout = ".... CMS_CONTAINER[2] ..."; $mod = "<?php echo "X"; ?>; $seite = str_replace("CMS_CONTAINER[2]",$mod,$layout);
geht doch eigentlich nicht oder ?Code: Alles auswählen
eval($seite);
eval erwartet aber php code
Code: Alles auswählen
eval(" ?".">".$seite."<"."?php ");
*** make your own tools (wishlist :: thx)
Leider geht es nicht.eval erwartet aber php code
müsste gehen...Code: Alles auswählen
Code: eval(" ?".">".$seite."<"."?php ");
Sogar wenn in der Variable $seite nur "blablabla" steht, wird es nicht angezeigt.
also das ist sowieso falsch
folgendes müsste schon eher funktionieren...
wenn du schreibst es geht was nicht... -> dann bitte mit genauer fehlermeldung...
gesamter code sieht dann eigentlich so aus
Code: Alles auswählen
$mod = "<?php echo "X"; ?>;
Code: Alles auswählen
$mod = "<"."?php echo \"X\"; ?".">";
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)
wenn das eine vereinfachung ist... 

aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)