Hallo zusammen, hab da mal ne Frage: Normalerweise kann ich in der Datei /system/views/product_info/ProductInfoContentView.inc.php eine stinknormale PHP Anweisung wie z.B. PHP: echo "test" einfügen und dies sollte doch dann auch auf der Artikelseite angezeigt werden. Schön und gut - funzt auch auf meinem lokalen Testsystem, jedoch nicht auf dem Liveserver (Seitencache geleert, ebenfalls Inhalte in /templates_c gelöscht). Hat da jemand eine Erklärung dafür? Finde ich sehr komisch. thx tom --- Gambio GX2 v2.0.6h r3647
Yep, nix mehr drin. Kapier´s einfach nicht! Ach ja, verwende EyeCandy Template. Aber was jetzt ganz lustig ist: Wenn ich einen FatalError provoziere (z.B. erste Zeile require_once(...) -> require_onc(...)) und die Seite neu lade, erhalte ich online keine Fehlermeldung (auch nicht im Apache errorlog). Wo wird denn die Seite noch gecached außer unter cache/ oder templates_c/ ?
So, jetzt wird´s lustig: Ich habe spaßeshalber der ProductInfoContentView.inc.php die Leserechte genommen -> die Seite wird trotzdem angezeigt! Habe dann der ProductInfoContentView.inc.orig.php die Leserechte genommen -> Fehler D.h. online wird die ProductInfoContentView.inc.orig.php verwendet, offline die ProductInfoContentView.inc.php! Wie kann das sein? Kann man das irgendwo einstellen? Wenn ich der ProductInfoContentView.inc.php die Leserechte wieder gebe, wird trotzdem versucht auf die ProductInfoContentView.inc.orig.php zuzugreifen! Is it a bug or a feature? thx tom
Hallo tom, it's a feature. Die ClassRegistry (system/core/ClassRegistry.inc.php) liest alle php-Dateien z. B. aus dem system/views Verzeichnis aus, so dass deine ProductInfoContentView.inc.orig.php die ProductInfoContentView.inc.php überschreibt. Das System ermöglicht die Plugin-Fähigkeit des Shops. Nonito hat das hier genauer beschrieben: http://www.gambio-forum.de/threads/834-Plugin-Fähigkeit-von-GX2-Ein-Überblick-und-Ausblick Dein Offline-System sortiert die Dateien beim Auslesen der Dateien vermutlich anders, als dein Online-System, was das unterschiedliche Verhalten erklärt.
Hallo Moritz, ok, aber sollte man sich als Programmierer eben nicht darauf verlassen, wie ein System sortiert, sondern die Sortierung sollte vernünftigerweise durch das Programm vorgenommen werden, sonst kommt es zu eben solchen Abweichungen wie diesem (für mich ein Bug)! Werde jetzt die ClassRegistry bzw. Registry umprogrammieren müssen, damit ich weiterhin auf einem lokalen System (WinXP/WAMP) testen und entwickeln kann .- sehr ärgerlich. tom
Nun, daran kann der Programmierer nicht viel ändern, wie das OS die Dateien anlegt..... Und da das Klassensystem davon ausgeht, dass der erste Teil des Dateinamens der Klassenname ist, und die Zuordnung Klassenname/Klassenpfad in einem assoziativen Array erfolgt, wird halt nur eine Klasse "ProductInfoContentView" erkannt. Und welche das ist, hängt eben davon ab, in welcher Reihenfolge das OS die Dateien bei einer Verzeichnisabfrage anliefert. Es ist allerdings auch nicht sinnvoll eine "ProductInfoContentView.inc.orig.php" und eine "ProductInfoContentView.inc.php" im selben Verzeichnis zu haben (auch nicht in einem Unterverzeichnis dieser Hierarchie)..... Die "ProductInfoContentView.inc.orig.php" solltest Du anderswo sichern...
Nun, da man den modularen Weg beschreiten möchte, müsste man doch nicht einfach ein scandir() nach der Extension '.php', sondern zusätzlich einen nach '.orig.php' machen und dann beide Arrays abgleichen, ob bereits der Klassenname im ersten Array (.php) schon vorhanden ist (z.B. mit array_diff_key()). Und falls nicht, das zweite Array (.orig.php) dazufügen.
Nee, ist klar Das war ja auch nur ein Ansatz für Gambio bzw. so wie ich das machen würde, damit sowas auf unterschiedlichen System immer korrekt läuft. Habe jetzt einfach die Extension umbenannt, sodaß diese nicht mehr über die dir() funktion gefunden wird. Klappt jetzt auch alles wie gewünscht. Danke Avenger für den Hinweis