+ Antworten
Seite 3 von 3 ErsteErste 1 2 3
Ergebnis 21 bis 30 von 30

Thema: CSS eines Moduls überschreiben

  1. #21
    Wohnt hier Avatar von oldlady
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    4.845
    Bedankte sich
    357
    Erhielt 1.407 Danksagungen
    in 1.288 Beiträgen

    Standard

    Ist es also doch so, dass das Modul-CSS NACH meinem Template-CSS geladen wird?
    Ich denke, ja. Dein jdoc-Aufruf, mit dem du diesen Modul einbindest, kommt ja erst während der Programmausführung. PHP ist ein interpreter, kein compiler.
    Aber da möchte ich mich nicht zu weit aus dem Fenster lehnen.
    Grüße, Christiane
    Joomla braucht dich!

  2. #22
    Wohnt hier Avatar von Joomla-Hilfe
    Registriert seit
    12.08.2010
    Beiträge
    3.668
    Bedankte sich
    78
    Erhielt 1.094 Danksagungen
    in 874 Beiträgen

    Standard

    Du mußt nur die richtige Id ansprechen

    #test gibt es gar nicht. Da kannst du soviel definieren wie du willst. Du mußt #jflanguageselection anders definieren.

  3. #23
    Wohnt hier Avatar von Joomla-Hilfe
    Registriert seit
    12.08.2010
    Beiträge
    3.668
    Bedankte sich
    78
    Erhielt 1.094 Danksagungen
    in 874 Beiträgen

    Standard

    Zitat Zitat von oldlady Beitrag anzeigen
    Ich denke, ja.
    Nein, wenn es korrekt mit der API in den Head eingebunden wird, kommt es vorher. Aber wenn man natürlich nicht vorhandene Ids formatiert, kann sich auch nichts ändern.

    Dein jdoc-Aufruf, mit dem du diesen Modul einbindest, kommt ja erst während der Programmausführung.
    Das hat damit nichts zu tun. Das CSS wirkt sich erst im Browser aus, und der sieht nur die komplette Seite, nicht die Reihenfolge, in der sie zusammengesetzt wurde.

    PHP ist ein interpreter, kein compiler.
    Wieder mal: Jein. PHP wird zwar compiliert, aber nicht wie bei anderen Compilern einmal für immer, sondern jedesmal zur Laufzeit. Es ist also ein Compiler, der nach außen wie ein Interpreter arbeitet
    Geändert von Joomla-Hilfe (22.09.2010 um 15:44 Uhr) Grund: Typo

  4. Erhielt Danksagungen von:


  5. #24
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Zitat Zitat von Joomla-Hilfe Beitrag anzeigen
    Nein, wenn es korrekt mit der API in den Head eingebunden wird, kommt es vorher. Aber wenn man natürlich nicht vorhandene Ids formatiert, kann sich auch nichts ändern....
    Ich habe dieses #test doch nur als Beispiel angeführt. In Wirklichkeit habe ich natürlich schon die richtige ID verwendet:

    Code:
    #jflanguageselection
    {
        float: right;
        margin: 15px 0px 10px 5px;
    }
    Habe ich in meinem basemod.css überschrieben mit (zum Testen):

    Code:
    #jflanguageselection
    {
        float: left;
        margin: 5px 4px 10px 5px;
    }
    Aber das sieht man auch in meinem angehängten Screenshot (14:32), dass ich nicht #test verwendet habe.

    Und sonderbarerweise wird basemod.css, wo mein überschreibender Style drinsteht, doch NACH dem modul-CSS aufgerufen, wie ich im Netzwerkmonitor von Firebug feststellen konnte.

    Firebug-Netzwerkansicht:
    Angehängte Grafiken
    Geändert von franc (22.09.2010 um 14:54 Uhr) Grund: Nachtrag (firebug-netzwerk attachment)

  6. #25
    Wohnt hier Avatar von Kubik-Rubik
    Registriert seit
    20.10.2005
    Ort
    Kubik-Rubik.de
    Beiträge
    2.737
    Bedankte sich
    177
    Erhielt 1.058 Danksagungen
    in 792 Beiträgen

    Standard

    Zitat Zitat von franc Beitrag anzeigen
    Habe ich in meinem basemod.css überschrieben mit (zum Testen):

    Code:
    #jflanguageselection
    {
        float: left;
        margin: 5px 4px 10px 5px;
    }
    Aber das sieht man auch in meinem angehängten Screenshot (14:32), dass ich nicht #test verwendet habe.
    Schreib bei deiner Definition noch ein !important hinzu. Beispiel:

    Code:
    margin: 5px 4px 10px 5px !important;
    Das löst schon das Problem!

    Gruß
    Joomla! Extensions by Kubik-Rubik.de
    Keine Beantwortung von Supportanfragen per PN

    Joomla! braucht Dich!

  7. #26
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Zitat Zitat von Joomla-Hilfe Beitrag anzeigen
    ... Das CSS wirkt sich erst im Browser aus, und der sieht nur die komplette Seite, nicht die Reihenfolge, in der sie zusammengesetzt wurde...
    Aber in welcher Reihenfolge setzt der Browser denn das dann zusammen?
    Ist es denn nun Zufall, welche CSS-Regel genommen wird, wenn die selbe Regel in zwei verschiedenen Dateien steht? Das kann es doch wohl nicht sein.
    Geändert von franc (22.09.2010 um 15:00 Uhr) Grund: Syntax

  8. #27
    Wohnt hier Avatar von Joomla-Hilfe
    Registriert seit
    12.08.2010
    Beiträge
    3.668
    Bedankte sich
    78
    Erhielt 1.094 Danksagungen
    in 874 Beiträgen

    Standard

    Zitat Zitat von franc Beitrag anzeigen
    Aber in welcher Reihenfolge setzt der Browser denn das dann zusammen?
    Die Definition, die später kommt, überschreibt frühere. Deshalb sollen die Template-CSS im Head hinter <jdoc:include type="head" /> stehen, damit dort Definitionen aus Erweiterungs-CSS überschrieben werden können. Beispiel:
    Code:
    #jflanguageselection {
    ...
    }
    in deiner template.css überschreibt die entsprechende Definition in der Modul-CSS.

    Durch mehrfaches Überschreiben wird aber die Darstellung im Browser nicht schneller. In deinem Beispiel in http://www.joomlaportal.de/joomla-er...ml#post1130881 wird #jflanguageselection aus basemod.css bereits durch dieselbe Definition in mod_jflanguageselection.css überschrieben. Wenn du es jetzt noch einmal in deiner template.css überschreibst, muß der Browser zwei Definitionen völlig sinnlos einlesen und wieder verwerfen. Deshalb wäre es besser, in einem Override nur die mod_jflanguageselection.css in deinem Template laden zu lassen und die anderen Definitionen gar nicht erst zu machen. Aber das geht eben nur, wenn die Funktion zum Laden des Stylesheets auch in der View des Moduls steht.

    Ich hab gerade keinen Joomfish da, um nachzusehen, wie es dort gemacht ist, aber z.B. in der Phoca Gallery werden die CSS in der view.html.php eingebunden, und die kann nicht in einem Override überschrieben werden. So ist es nach meiner Beobachtung in den meisten Extensions.

    Edit: Du kannst nicht nach der Reihenfolge des Ladens im Firebug gehen. Entscheidend ist die Reihenfolge der Dateien im Head des generierten Quelltextes.
    Geändert von Joomla-Hilfe (22.09.2010 um 16:09 Uhr)

  9. #28
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Das ist ja das Sonderbare: ich habe die eigene CSS-Datei, in der ich das #jflanguageselection überschreibe NACH <jdoc:include type="head" /> gesetzt aber es wird immer vom Modul-CSS überschrieben.
    Ich weiß nicht, wie ich die tatsächliche Reihenfolge des CSS-Dateiladens ermitteln kann.
    Wenn ich es hinten anstelle und es dennoch nicht übernommen wird, dann weiß ich auch nicht.

  10. #29
    Wohnt hier Avatar von Joomla-Hilfe
    Registriert seit
    12.08.2010
    Beiträge
    3.668
    Bedankte sich
    78
    Erhielt 1.094 Danksagungen
    in 874 Beiträgen

    Standard

    Zitat Zitat von franc Beitrag anzeigen
    Ich weiß nicht, wie ich die tatsächliche Reihenfolge des CSS-Dateiladens ermitteln kann.
    Seitenquelltext öffnen, im Head nachsehen.

  11. #30
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Ja, danke, ich bin blind gewesen, so einfach und naheliegend :-)
    Und da sieht man ganz klar, dass das modul-CSS am Schluss erst geladen wird:

    Code:
      <link rel="stylesheet" href="/templates/momentum11_yaml/css/momentum11/layout_2col_13.css" type="text/css" />
      <link rel="stylesheet" href="/templates/momentum11_yaml/css/momentum11/navigation/nav_vlist.css" type="text/css" media="all"  />
      <link rel="stylesheet" href="/templates/momentum11_yaml/css/momentum11/navigation/nav_shinybuttons.css" type="text/css" media="all"  />
      <link rel="stylesheet" href="/modules/mod_jflanguageselection/tmpl/mod_jflanguageselection.css" type="text/css" />
    Ich mach das jetzt mit deaktiviertem modul-CSS, das ist am Schnellsten. Mit !important wäre es natürlich auch gegangen.

+ Antworten
Seite 3 von 3 ErsteErste 1 2 3

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein