Fork me on GitHub
"XOOPS ist ein dynamisches OO (Objekt Orientiertes) open source Portal Script geschrieben in PHP. XOOPS ist ein ideales CMS (Content Management System) für den Aufbau von kleineren und grösseren Communities, Firmen-, Intra- und Internet-Portale, Web-Logs und vieles mehr."
forum
Bitte schaut in die DOKUMENTATION oder benutzt die SUCHFUNKTION bevor Ihr Eure Fragen im Forum stellt. Viele Fragen wurden bereits gestellt.

Leser in diesem Thema:   1 Anonyme(r)




Status eines Block innerhalb einer dargestellten Seite?
#1
Benutzerinformationen
So eine ähnlich komplizierte Frage habe ich bereits auf xoops.org gestellt, aber keine zufriedenstellende Lösung bis jetzt gefunden/erhalten.

Hauptsächliches Problem sind die Blöcke, die ich innerhalb meines Moduls einsetze. 5 Blöcke davon nutzen denselben Javascript-Code (plus 2 Dateien des Moduls). Da ich (als Programmierer) nicht weiß, wo der Administrator der Webseite die Blöcke dargestellt haben will, bin ich mehr oder minder gezwungen dem Block jedes Mal die Javascript- und CSS-Dateien mitzugeben. Das hat zur Folge, dass Code mehrfach geladen wird und das hat weiterhin zur Folge, dass Javascript rumzickt.

Ich könnte es mir einfach machen und im readme zu schreiben, dass die und die Dateien mit in die theme.html eingebunden werden müssen. Das ist aber suboptimal, weil dann der Code immer mit eingebunden ist, auch wenn er nicht benötigt wird.

Der Versuch mit defines in den jeweiligen Dateien und die Abfrage if(defined...) hat nicht geklappt, weil die Reihenfolge wichtig ist, wie Blöcke und Inhalte gerendert werden. Das mit den defines klappt also nur teilweise.

Ich brauche also eine Art flag, womit angezeigt wird: ja, Javascript und CSS sind bereits geladen, also überspringe diesen Part. Anscheinend können Blöcke und Moduldateien untereinander nicht (oder nur partiell) miteinander kommunizieren.

Ich habe mir jetzt einen obskuren?? Weg programmiert und das Ganze über get_included_files gelöst. Dieser Array scheint immer zu funktionieren. Ich frage in jedem relevanten Block ab, ob eine bestimmte inkludierte Datei im Array vorhanden ist.

Ich frage mich: Gibt es nix Schöneres?

In der Hoffnung mich klar ausgedrückt zu haben, hoffe ich auf ein paar Hinweise.

Geschrieben: 28.09.2009
_________________
... is gone with the wind ...
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#2
Benutzerinformationen
Im ersten Augenblick dachte ich an "extgallery", weil das Modul auch Blöcke mit Javascript verwendet. Mir ist aber dann auch gleich eingefallen, das für die korrete Funktion dieser ganzen Effekte die Einbindung der "mootools" in die theme.html nötig ist.

Möglicherweise wirst du da doch nicht rum kommen. Ich hab zumindest keine bessere Idee.

Geschrieben: 28.09.2009
_________________
if(ahnung == 0) {use SEARCH; use BRAIN; use GOOGLE; } else {make post;}
Wie man Fragen richtig stellt
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#3
Benutzerinformationen
joachim, blöde Nachfrage eines Nichtprogrammierers: wenn der webmaster deine 5 blöcke nun auf der Startseite zeigen will (also ohne, das Du die Möglichkeit hast, üder den modulheader in die theme.html zu schreiben), du also quasi 5 mal das gleiche js laden lässt, wird das denn dann eh' nicht nur 1 mal ausgeführt (für alle blöcke)? Oder werden Pfade per js übergeben? Kannst Du nicht einfach für jeden Block ein "eigenes js" will sagen eine block1.js, block2.js, blockx.js laden? Ist dieses "x" nicht über eine smarty zu ersetzen block< { bxID } >.js und/oder kann das js nicht nach diesem Schema dann "generiert" werden, wenn die jew. Blöcke aktiv sind? Grundsätzlich hasse ich ja js- aber vorallem css-Lade-aufrufe innerhalb des < body > weswegen ich grundsätzlich nix dagegen hätte, im Zweifelsfall eine readme zu lesen

Geschrieben: 28.09.2009
_________________
XOOPSFACTORY.COM - my XOOPS playground
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#4
Benutzerinformationen
Die erwähnten 5 Blöcke benutzen alle die jquery fancybox um die Player innerhalb der Seite darzustellen, also muss ich das gleiche Javascript verwenden.

Wenn ich das gleiche Javascript mehrfach laufen habe, gibt es so lustige Effekte wie verdoppelte divs bei dem Fenster, die sich auch noch genau über den Inhalt legen.

Ab 2.4 gibt es ja die Möglichkeit über addScript die Skripte an die Datei-URL zu hängen, bringt mich aber nicht nach vorn, da auch hier die gleichen Skripte mehrfach eingebunden werden.

Es fehlt also ein blockübergreifendes Flag über das die Blöcke und Moduldateien Informationen austauschen können.

Wie gesagt: get_included_files ist bis jetzt die einzige Möglichkeit die ich gefunden habe, die global funktioniert. Über Sessions und Cookies wüsste ich jetzt auch nicht, wie ich mein Problem lösen könnte.

Geschrieben: 29.09.2009
_________________
... is gone with the wind ...
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#5
Benutzerinformationen
Habe es jetzt auch mit den defines hinbekommen. Rein zufällig, da get_included_files nur bei einer Datei funktioniert hat und bei der anderen nicht.

Wenn ein define-Flag in einem Block gesetzt wird, dann kann dies ruhig in der Funktion geschehen. Wenn ein define-Flag in einer Moduldatei gesetzt wird, dann muss dies BEVOR xoopsroot / header.php eingebunden wird.

Hätt mir ja mal einer vorher sagen können!

KÄSEKUCHEN: oben genannte Vorgehensweise klappt nur mit einem Block. Ein Block der danach kommt, kennt das define vom vorherigen Block nicht mehr. Naja, wat soll et...

Geschrieben: 29.09.2009

Bearbeitet von frankblack am 29.09.2009 15:50:56
Grund:
_________________
... is gone with the wind ...
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#6
Benutzerinformationen
experimeniere mal mit $GLOBALS

Geschrieben: 29.09.2009
Erstelle PDF des Beitrags Drucke

Aw:: Status eines Block innerhalb einer dargestellten Seite?
#7
Benutzerinformationen
Tut es auch nicht! Die im Block definierte Variable kann ich ausgeben, die in der Moduldatei definierte Variable nicht.

ghia auf xoops.org meinte, dass es mit der Reihenfolge zusammenhängt in der die Skripte abgearbeitet werden.

Hilft mir nur nix. Modulentwickler können/sollen den Themeentwicklern nicht vorschreiben, in welcher Reihenfolge die Inhalte gerendert werden.

Geschrieben: 30.09.2009
_________________
... is gone with the wind ...
Erstelle PDF des Beitrags Drucke







[Erweiterte Suche]