javascript über my_header.php

Begonnen von seleck, 19 September 2014, 12:18:55

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

seleck

Hallo,

in der "pragma 1.12" gab die Möglichkeit eigene Java Skripte  über \includes\my_header.php zu integrieren.
Ich habe nun festgestellt, dass in der "Pragma 2.1" in der my_header.php eingesetzte Skripte nicht eingelesen werden. Z. B.

<!-- SLIDESHOW JS -->
<script type="text/javascript" src="includes/javascript/slideshow.js"></script>
<!-- SLIDESHOW AUSFÜHREN -->
<script type="text/javascript">


Liege ich falsch oder mache ich irgendwo ein Fehler?

Bitte um Hilfe
If I advance, follow me.
If I stop, push me.
If I fall, inspire me.

Webfan

Hallo seleck,
es gibt jetzt die Modulhooks prepare header und prepare.content, zudem gibt es die Klasse
pmxHeader (in includes/classes/Header.php).
Dort gibt es verschiedene Methoden Code, oder css/js Links in den Header einzufügen.

mfg

seleck

Hallo Webfan, danke erstmals für das Antwort.
Paar dumme Fragen dazu:
1. Wo ist dieser 'prepare header' und 'prepare.content' zu finden?
2. in 'includes/classes/Header.php' sind diese verschieden Medthoden bzw. Funktionen irgendwo dikumentiert. (Vielleicht in DOCS/Dokumentation neue) ich habe leider es nicht gefunden.
If I advance, follow me.
If I stop, push me.
If I fall, inspire me.

Olaf

die prepare.herader.php und prepare.content.php müssen sich immer im Unterordner "core" des Moduls befinden und werden per Hook vom System aufgerufen.

Beispiel für eine prepare.header.php findest du im Modul "rss" und für prepare.content.php im Modul "Documents"

alternativ kannst du für Globale Sachen im Ordner "Includes" des Systems eine Datei "prepareoutput.php" anlegen. In dieser kannst du z.Bsp. mitmxHeader::add_script_code("hier kommt dein Javascript.....ohne die Angaben '<script>etc.") deine JS einbinden.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Webfan

Dann gibt es da noch den hook prepare.page.
So wie ich es spontan sehe, scheinen die hooks "modulspezifisch" zu wirken, also wenn das entsprechende Modul aufgerufen wird, prepare.header und prepare.page dagegen global/modulübergreifend, was ja durchaus hier auch so benötigt wird?
Bitte korrigiere mich TerraProject wenn ich mich vertue, ich meine aber es gibt hier hooks welche global und welche modulspezifisch wirken, das sollte hier nicht unerwähnt bleiben, wenn Du also die Ausgabe ALLER Module modifizieren möchtest ist prepare.page Dein freund!?

---------------
Zitatalternativ kannst du für Globale Sachen im Ordner "Includes" des Systems eine Datei "prepareoutput.php" anlegen. In dieser kannst du z.Bsp. mit
Das wußte ich bisher nicht, interessant, aber wozu ist das so, also was ist der Unterschied zur my_header welche wir schonmal hatten, und ist prepare.page dieser Methode nicht vorzuziehen?
Bzw. was ist besser an prepareoutput.php als an der alten my_header.php?


2.
Zitatin 'includes/classes/Header.php' sind diese verschieden Medthoden bzw. Funktionen irgendwo dokumentiert. (Vielleicht in DOCS/Dokumentation neue) ich habe leider es nicht gefunden.
Es gibt im Wesentlichen unter anderem die Methoden
::add  (code inkulsive script tags einfügen) / z.B. Deinen obigen codeschnippsel einfügen
::add_script   / javascript url einfügen
::add_style         / css url einfügen
In den verschiedenen Modulen sollten eigentlich zahlreiche Codebeispiele vorhanden sein, auch die Klasse ansich ist m.E. ausreichend dokomentiert. Wenn Du Fragen dazu hast, stehe ich, und sicher auch die pmx community Dir gerne zur Verfügung...


Olaf

Zitat
Zitat von: Webfan am 21 September 2014, 02:09:36
Dann gibt es da noch den hook prepare.page.
So wie ich es spontan sehe, scheinen die hooks "modulspezifisch" zu wirken, also wenn das entsprechende Modul aufgerufen wird, prepare.header und prepare.page dagegen global/modulübergreifend, was ja durchaus hier auch so benötigt wird?
Bitte korrigiere mich TerraProject wenn ich mich vertue, ich meine aber es gibt hier hooks welche global und welche modulspezifisch wirken, das sollte hier nicht unerwähnt bleiben, wenn Du also die Ausgabe ALLER Module modifizieren möchtest ist prepare.page Dein freund!?

also:
prepare.content und prepare.page werden bei jedem Seitenaufruf ausgeführt, sobald die footer.php aufgerufen wird, Unterschied ist nur, das bei prepare.content nur die Ausgabe des Moduls übergeben wird, d.h. keine Blöcke, etc. und bei prepare.page steht der komplette Code der Ausgabe bereit.

Zitat
Zitatalternativ kannst du für Globale Sachen im Ordner "Includes" des Systems eine Datei "prepareoutput.php" anlegen. In dieser kannst du z.Bsp. mit
Das wußte ich bisher nicht, interessant, aber wozu ist das so, also was ist der Unterschied zur my_header welche wir schonmal hatten, und ist prepare.page dieser Methode nicht vorzuziehen?
Bzw. was ist besser an prepareoutput.php als an der alten my_header.php?
Die Möglichkeit der "prepareoutput.php" besteht schon seit einigen Versionen, d.h. die Methode ist schon alt und auch (noch) vorhanden und könnte somit genutzt werden. Unterschie zur my_header.php ist, das die prepareoutput.php erst ganz am Ende der Scriptabarbeitung eingelesen wird. Eine definierte Schnittstelle ist da nicht vorhanden. Ausgaben (echo) in der prepareoutput.php werden direkt und genau so ausgegeben und werden vom Script nicht mehr validiert, verändert etc. Dort ist dann auch keine Ausgabe mehr über die mxHeader möglich.... Verwendbar z.Bsp. um JS am Ende des HTML-Codes auszugeben.....

Ja, die Dokumentation wird erst nach und nach wachsen, ich kann nicht alles gleichzeitig machen. Vielleicht kannst du, Webfan, uns dabei ja unterstützen ? :BD: Würde mich freuen ...
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Webfan

Das die Dokumentation der Entwicklung hinterherhinkt, dieses Problem habe ich auch ständig.
Ich werde mal sehen was ich machen kann.
Möglicherweise kann ich einige Dateien aus dem Responsive Theme Modul als Beispieldateien bereitstellen.
Im neuen Dokumodul auf omx.org kann man keine Artikel einreichen??

Wie gesagt, wenn ich dazu komme, gerne.

mfg

seleck

Hallo Zusammen,

zuerst vielen Dank für alle diese Infos.

ich bin wie der Olaf vogeschlagen hat, wie folgt vorgegangen:

1. unter /include/ habe ich die Datei prepareoutput.php angelegt und habe mein Codeschnipsel eingebunden.

Leider wird dieser Code vor dem anderen System-JS-scripte ausgegeben.
Z. B. in der Header wird zuerst der codeschnipsel:

<!-- SLIDESHOW JS -->
<!---<script type="text/javascript" src="includes/javascript/jquery.min.js"></script>--->
<script type="text/javascript" src="includes/javascript/slideshow.js"></script>
<!-- SLIDESHOW AUSF?HREN -->
<script type="text/javascript">

/* <![CDATA[ */
   
$(window).load(function() {
$('#slider').nivoSlider({
randomStart: true
});
});

/* ]]> */ 

</script>


und erst danach werden alle in System vorhandnen JS-Classes eingebunden:

<script type="text/javascript" src="includes/javascript/jquery/jquery.min.js"></script>
<script type="text/javascript" src="includes/javascript/jquery/ui/jquery-ui-pmx-core.min.js"></script>
<script type="text/javascript" src="includes/javascript/jquery/ui/jquery.ui.slider.min.js"></script>
<script type="text/javascript" src="includes/javascript/jquery/jquery.effects.core.min.js"></script>
<script type="text/javascript" src="includes/javascript/jquery/jquery.effects.slide.min"></script>
<script type="text/javascript" src="includes/javascript/debugmode.min.js"></script>


Das hat natürlich die Folge, dass 'Slideshow.js' nicht funkioniert. die Datei 'jquery.min.js' muss vorher ausgeführt werden.

Einen anderen Vorschalg ?

Danke voraus
If I advance, follow me.
If I stop, push me.
If I fall, inspire me.