RO in GMENU mit disableAllHeaderCode

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    13. 04. 2006, 23:37

    Hallo!

    Kennt jemand eine Möglichkeit, das für den RollOver-Zustand eines GMENU notwendige JavaScript nachträglich in einen Marker zu parsen?

    Ich habe "disableAllHeaderCode = 1" gesetzt, um den Quelltext sauber halten zu können, muss allerdings nachträglich dieses "additionalJavaScript" (oder was auch immer das sein mag) reinbekommen ;-(

    Würde mich sehr über eine positive Antwort freuen!!!

    Viele Grüße
    Ben


  • 1
  • NCoDer NCoDer
    T3PO
    0 x
    19 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 11:22

    Es gibt 3 dynamisch erzeugte Javascripts-Abschnitte:

    Einmal <script type="text/javascript" src="typo3temp/javascript_757c080409.js"></script>

    da steht aber nur statischer Code für die Browserweiche drin (wenn man nicht noch mehr Funktionen eingebaut hat), den kannst du auch ins Template direkt reinschreiben:

    1. var msie4 = (browserName == "Microsoft Internet Explorer" && browserVer >= 4);
    2. if ((browserName == "Netscape" && browserVer >= 3) || msie4 || browserName=="Konqueror" || browserName=="Opera") {version = "n3";} else {version = "n2";}
    3. // Blurring links:
    4. function blurLink(theObject) { //
    5. if (msie4) {theObject.blur();}
    6. }

    kritischer ist es mit dem 2.Teil, da man ja die temporären Namen der Bilddateien nicht kennt:

    1. if (version == "n3") {
    2. img19_3dc2_0_n=new Image(); img19_3dc2_0_n.src = "typo3temp/menu/5e93d35621.gif";
    3. img19_3dc2_0_h=new Image(); img19_3dc2_0_h.src = "typo3temp/menu/5e93d35621.gif";
    4. img12_3dc2_1_n=new Image(); img12_3dc2_1_n.src = "typo3temp/menu/fb783d03cd.gif";
    5. img12_3dc2_1_h=new Image(); img12_3dc2_1_h.src = "typo3temp/menu/5a55b10a6a.gif";

    usw.

    Da werden neue Imageobjekte für jede temporäre Bilddatei angelegt. DiesenTeil brauchen aber nur ältere Browser sowie Opera und Konqueror.
    Ich würde sagen, bei denen könnte man auf den Rollover-Effekt verzichten (bei Opera geht es inzwischen bestimmt auch so wie bei den anderen).

    Der dritte Teil enthält die Funktionen für den Rollover-Effekt, die kannst du ja direkt ins Template reinschreiben und so modifizieren dass sie bei version=='n3' nichts tun. Die Funktionen im Original sehen so aus:

    1. function over(name,imgObj) { //
    2. if (version == "n3" && document[name]) {document[name].src = eval(name+"_h.src");}
    3. else if (typeof(document.getElementById)=="function" && document.getElementById(name)) {document.getElementById(name).src = eval(name+"_h.src");}
    4. else if (imgObj) {imgObj.src = eval(name+"_h.src");}
    5. }
    6. // JS function for mouse-out
    7. function out(name,imgObj) { //
    8. if (version == "n3" && document[name]) {document[name].src = eval(name+"_n.src");}
    9. else if (typeof(document.getElementById)=="function" && document.getElementById(name)) {document.getElementById(name).src = eval(name+"_n.src");}
    10. else if (imgObj) {imgObj.src = eval(name+"_n.src");}
    11. }

    Gruß,

    Nico

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 15:01

    Hallo Nico,

    erstmal vielen Dank!

    [quote="NCoDer"]
    Der dritte Teil enthält die Funktionen für den Rollover-Effekt, die kannst du ja direkt ins Template reinschreiben und so modifizieren dass sie bei version=='n3' nichts tun. Die Funktionen im Original sehen so aus:
    [/quote]

    Ich habe gerade mal testweise ein [b]alert(browserVer);[/b] in die "Browserweiche" eingebaut: Firefox gibt mir eine "5" und der IE eine "4" und somit springen beide auf "n3" an:

    1. if ((browserName == "Netscape" && browserVer >= 3) || msie4 || browserName=="Konqueror" || browserName=="Opera") {version = "n3";} else {version = "n2";}

    Grundsätzlich glaube ich, dass alle Browser die dynamischen Dateinamen brauchen, denn aus dem normalen Dateinamen lässt sich der Hover-Dateiname nicht ableiten. Beispiel:
    1. <a href="ordner/" onmouseover="over('img114_c6ae_0');" onmouseout="out('img114_c6ae_0');"><img src="typo3temp/menu/38db1ab705.gif" width="163" height="18" border="0" name="img114_c6ae_0" alt="" /></a>

    zugehöriges Hover-JS:
    1. img114_c6ae_0_n=new Image(); img114_c6ae_0_n.src = "typo3temp/menu/38db1ab705.gif";
    2. img114_c6ae_0_h=new Image(); img114_c6ae_0_h.src = "typo3temp/menu/d22f94c880.gif";

    Ich gehe also davon aus, dass die dynamischen Bildnamen schon per JavaScript eingebunden werden müssen und somit die einzige mögliche Lösung daran besteht, dass ich irgendwie das ursprüngliche Script, welches das JS-Zeugs generiert, nehme und damit einen von mir definierten Marker fülle. Die Frage ist bloß wie...

    Geschickter wäre es natürlich, wenn Typo3 direkt alle Hover-Bilder unter gleichem Dateinamen mit einem fixen Zusatz (z.B. *_h.gif abspeichern würde).

    Viele Grüße und allen schöne Ostern!
    Ben

  • toyde toyde
    Jedi-General
    0 x
    1971 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 15:41

    Ich habe "disableAllHeaderCode = 1" gesetzt, um den Quelltext sauber halten zu können, muss allerdings nachträglich dieses "additionalJavaScript" (oder was auch immer das sein mag) reinbekommen ;-(
    gehst Du nicht von der anderen Seite an das Problem: blende das aus, was Du nicht möchtest. So bleibt das Notwendige bestehen.

    JS und CSS-Styles kann man ja alles bequem per Einzeiler ausblenden.

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 15:57

    Ja, ich denke darauf muss es dann leider zwangsläufig hinauslaufen, wenn ich es so nicht hinbekomme. Das Problem dabei ist, dass ich bisher alle Projekte immer mit dem disableAllHeaderCode angegangen bin und noch keine Erfahrungen mit dem "normalen" Anatz habe. In meinem Header gibt es halt Marker, die mit dynamischem Inhalt gefüllt werden und ich befürchte, das das dann auch überschrieben wird, und ich dann für jede Extension angeben muss, dass diese nichts in den Header schreiben soll. Bevor ich weiter Eure Zeit mit meiner untypischen Herangehensweise verschwende, werde ich mich mal daran setzen und es testen. Falls Du den "Einzeiler" gerade zur Hand hat würde ich mich natürlich darüber freuen, ansonsten find ich's bestimmt auch in der TSREF..

    P.S. Der Grund für mein bisheriges "disablen": Ich wollte ein CMS, bei dem ich definieren kann was wo hingeschrieben wird – und nicht eins, bei dem ich alles überflüssige ausblende, bis es so aussieht, wie ich es mir vorstelle ;-)

  • toyde toyde
    Jedi-General
    0 x
    1971 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 16:34

    P.S. Der Grund für mein bisheriges "disablen": Ich wollte ein CMS, bei dem ich definieren kann was wo hingeschrieben wird – und nicht eins, bei dem ich alles überflüssige ausblende, bis es so aussieht, wie ich es mir vorstelle
    nur ein Tipp. Ob das nun mehr Zeit kostet alles Nötige erneut hineinzuschreiben oder das Störende auszublenden, kann ich nich beurteilen. Spätestens wenn ich mit JS für Bilder jonglieren müsste, würde ich Letzteres wählen.

    Beispiel: CSS einer Extention leeren (im TS Object Browser nachschlagen)
    [TS]plugin.tx_veguestbook_pi1._CSS_DEFAULT_STYLE >[/TS]

    Default JS/CSS im Header ausblenden bzw. auslagern:
    [TS]#external = auslagern, none = leeren
    config.removeDefaultJS = external
    config.inlineStyle2TempFile = 1 [/TS](beides Setup Snippets)

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    15. 04. 2006, 16:40

    Danke! Ich werd's versuchen und später dann mal meine Zusammenfassung hier veröffentlichen.

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    30. 04. 2006, 16:06

    So, disbleAllHeaderCode ist aus und das RO-Menü funktioniert so wie es soll. Bei der Umstellung sind noch ein paar Fragen aufgekommen - ein paar Kleinigkeiten, die ich noch gerne anpassen würde, aber nirgendwo Lösungsansätze ohne Verwendung zusätzliche Extensions gefunden habe:

    [b]1. der Title-Tag[/b]
    Da ich den Untertitel dem Seitentitel als <title> bevorzuge, habe ich es so umgesetzt:[TS]page.headerData {
    1 = TEXT
    1.field = subtitle // title
    1.wrap = <title>|</title>
    }[/TS]Das sieht allerdings im Quelltext etwas unschön aus, da vor dieser Zeile, entgegen allen anderen Zeilen des Head-Bereiches, der Tabulator-Abstand fehlt. Kann man den irgendwie reinbekommen? Es ist zwar nicht so tragisch, aber wenn ich das alles für zukünftige Projekte als Vorlage nehme, dann sollte es auch so gut wie möglich sein.

    [b]2. <meta name="generator" content="TYPO3 4.0 CMS" />[/b]
    Wie kann ich diese Zeile wegbekommen? Meiner Meinung nach reicht der 4-zeilige "powered by TYPO3"-Kommentar absolut aus, um zu zeigen, dass es eine Typo3-Website ist. Das ist unnötige Aufblähung des Quelltextes. Selbst der powerde-by Hinweis nervt etwas, denn zum einen gibt es den anscheinend nur auf englisch (ein Kommentar in der jeweilig verwendeten Sprache wäre angebrachter), und zum anderen gibt es auch bessere Wege um auf Typo3 hinzuweisen: z.B. eine entsprechende Anmerkung im Impressum.

    [b]3. Reihenfolge der Angaben im Head-Bereich[/b]
    Kann man die beeinflussen? Z.B. hätte ich den <title> gerne direkt unter der "meta http-equiv="Content-Type"-Zeile.

    Vielen Dank für jeden Tipp und viele Grüße aus Freiburg
    Ben

  • toyde toyde
    Jedi-General
    0 x
    1971 Beiträge
    0 Hilfreiche Beiträge
    30. 04. 2006, 16:13

    [b]Abstand vom linken Rand[/b]

    Beispiel:
    [TS]page.headerData.50 = TEXT
    page.headerData.50.value (
    <!-- FLIPMENU CODE start -->
    <script src="fileadmin/scripts/prototype.lite.js" type="text/javascript"></script>
    ..
    ..
    )[/TS]Ganz einfach 8 Leerschläge einfügen. Mit "page.headerData.50.value {}" kannst Du gleich mehrere Zeilen definieren.

    Zu [b]meta [/b]gibt's immer wieder Fragen im Forum. Evtl. wurden einiger der Fragen bereits abgedeckt.

  • Benjamecho Benjamech...
    Sternenflotten-Admiral
    0 x
    202 Beiträge
    0 Hilfreiche Beiträge
    30. 04. 2006, 16:18

    In diesem Fall (statischer Text) funktioniert das problemlos - auch mit einem Tab. Aber bei dem gewrappten Title funktioniert das so leider nicht :-(

    P.S. Ich bin mir ziemlich sicher, dass die Fragen im Forum noch nicht beantwortet wurden. Ich habe die Suchfunktion und auch Google zig mal benutzt und 100te von Beiträgen gelesen :-)

  • 1