Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Kleiner Drupal 6.x Bug im Header?

Eingetragen von Stoik (101)
am 15.03.2008 - 09:13 Uhr in
  • Themes & Theming
  • Drupal 6.x

Hallo,

vieleicht hat der ein oder andere das auch schon bemerkt, im drupal 6.1 gibts nen kleines Problem im Header.

Ich habe die Tage ein Drupal 6.1 Installiert und im Quellcode ist mir folgendes Aufgefallen

<link type="text/css" rel="stylesheet" media="all" href="/modules/node/node.css?3" />
<link type="text/css" rel="stylesheet" media="all" href="/modules/poll/poll.css?3" />
<link type="text/css" rel="stylesheet" media="all" href="/modules/system/defaults.css?3" />
<link type="text/css" rel="stylesheet" media="all" href="/modules/system/system.css?3" />
<link type="text/css" rel="stylesheet" media="all" href="/modules/system/system-menus.css?3" />

<link type="text/css" rel="stylesheet" media="all" href="/modules/user/user.css?3" />
<link type="text/css" rel="stylesheet" media="all" href="/themes/chauffeurtheme/style.css?3" />

Und zwar gehört das "?3" nicht mit dazu.

Selbst auf der http://demo.opensourcecms.com/drupal ist das gleiche Problem nur das dort eben "?K" steht!
Habt Ihr das auch schon bemerkt?

Grüße

‹ Bild im Header abhängig vom Menü Pfadangaben - Warum ändern sich diese? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

$query_string und IE5-Probleme bei CSS-Import per <link>

Eingetragen von C_Logemann (912)
am 20.03.2008 - 11:00 Uhr

Hallo Andreas,
im YAML-Drupal-Forum ging es vor Kurzem um das IE-Problem bezüglich einer "Aufnahmefähigkeit" bezüglich der Anzahl an importierbarer CSS-Dateien: http://forum.yaml.de/index.php?topic=4746.0

Nun beschäftige ich mich seit dem vergangenen Wochenende damit, wie Drupal 6 die CSS-Dateien einbindet, da bei meinen Template-Kompatibilitäts-Tests im IE 5 und 5.5 Probleme aufgetreten sind. Die alten IE benötigen mit dem Link-Befehl bei mir zur Zeit einen Reload, bevor sie alle CSS-Befehle annehmen. Dummerweise gehen bei mir Header und Footer-Informationen verloren und damit wichtige Menü-Punkte.

Ich habe zwar schon zum Testen ein kleines Script für das Template geschrieben, bei dem ich Link-Einbindungen in Style-@Import-Einbindungen umwandle. Aber ich habe mich auch schon mit der dafür zuständigen Funktion beschäftigt: http://api.drupal.org/api/function/drupal_add_css

Zwischen Zeile 1717 und 1739 im File common.inc erzeugt Drupal 6.1 die entsprechenden Links.

          if (!$preprocess && $type == 'module') {
            $no_module_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
          }
          // If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
          // regardless of whether preprocessing is on or off.
          else if (!$preprocess && $type == 'theme') {
            $no_theme_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
          }
          else {
            $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
          }
        }
      }
    }

    if ($is_writable && $preprocess_css) {
      $filename = md5(serialize($types) . $query_string) .'.css';
      $preprocess_file = drupal_build_css_cache($types, $filename);
      $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $preprocess_file .'" />'."\n";
    }
   

Die Variable $query_string enthält (wie ich heraus gefunden habe) die von Dir beschriebenen Informationen, die an die Links angefügt werden und mir auch schon aufgefallen sind.
Ich weiß zwar noch nicht wofür die $query_string-Anbindung gut sein soll und ob man das als Bug bezeichnen kann. Aber man kann diesen String in der common.inc entfernen.
In meinem kaum getesteten und damit nur mit Vorsicht anzuwendenden Workaround habe ich auch auf diese Variable verzichten können.

Mit folgenden Änderungen an der common.inc werden die CSS-Dateien wieder wie bei Drupal 5 ausgegeben:

        if (!$preprocess || !($is_writable && $preprocess_css)) {
          // If a CSS file is not to be preprocessed and it's a module CSS file, it needs to *always* appear at the *top*,
          // regardless of whether preprocessing is on or off.
          if (!$preprocess && $type == 'module') {
            $no_module_preprocess .= '<style type="text/css" media="'. $media .'">@import "'. base_path() . $file .'";</style>'."\n";
          }
          // If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
          // regardless of whether preprocessing is on or off.
          else if (!$preprocess && $type == 'theme') {
            $no_theme_preprocess .= '<style type="text/css" media="'. $media .'">@import "'. base_path() . $file .'";</style>'."\n";
          }
          else {
            $output .= '<style type="text/css" media="'. $media .'">@import "'. base_path() . $file .'";</style>'."\n";
          }
        }
      }
    }

    if ($is_writable && $preprocess_css) {
      $filename = md5(serialize($types) . $query_string) .'.css';
      $preprocess_file = drupal_build_css_cache($types, $filename);
      $output .= '<style type="text/css" media="'. $media .'">@import "'. base_path() . $preprocess_file .'";</style>'."\n";
    }

VORSICHT bei Copy-and-Paste, vor allem weil ich mein Code-Snippet mitten aus den Funktionen geschnitten habe, um meinen Beitrag nicht zu lang zu machen.
Wer die Änderung inhaltlich nicht nachvollziehen kann, sollte meiner Meinung nach auch die Finger davon lassen.

Für Rückmeldungen zu meiner Idee, Erklärungen zu dem Sinn von $query_string und einer eleganteren Lösung eines erfahreneren Programmierers wäre ich dankbar.
Wie ich schon im YAML/Drupal-Forum geschrieben habe, könnte ich mir "Schalter" im Backend vorstellen, für die allerdings meine Programmier-Fähigkeiten noch nicht ausreichen. Denkbar wäre ein Schalter für Entwickler-CSS-Kompression und einer für die Umschaltung von Link zu Style-@Import. Letzter Wunsch ist allerdings abhängig davon, ob das IE5-Problem grundsätzlich auf dem Link-Tag beruht.

Bis dann,
Carsten

  • Anmelden oder Registrieren um Kommentare zu schreiben

IE: 30+ link/style tag-Problem und IE5/D6-Problem

Eingetragen von C_Logemann (912)
am 11.05.2008 - 18:36 Uhr

Für das erwähnte Problem, daß der IE Probleme hat, mehr als 30 CSS-Tags einzulesen, gibt es ein Diskussion auf drupal.org. Dort habe ich ein Workaround gepostet, bei der ich das IE5/D6-Problem bezüglich des link-import-tag gemeinsam löse:
http://drupal.org/node/228818#comment-839816

  • Anmelden oder Registrieren um Kommentare zu schreiben

Soll das Brower-Caching umgehen

Eingetragen von drubb (580)
am 11.05.2008 - 21:57 Uhr

Hallo,

dieses "Feature" (Fragezeichen + Anhängsel hinter css und js) wurde wohl absichtlich eingebaut, wenn ich die Dokumentation von drupal_get_css auf api.drupal.org richtig verstehe:


// A dummy query-string is added to filenames, to gain control over
// browser-caching. The string changes on every update or full cache
// flush, forcing browsers to load a new copy of the files, as the
// URL changed.
$query_string = '?'. substr(variable_get('css_js_query_string', '0'), 0, 1);

Ich halte diese Methode für etwas zweifelhaft, schließlich gibt es ja auch Javascripte mit Parametern, und die
funktionieren dann nicht mehr. Aber jedenfalls: it's a feature, not a bug.

Gruß,
Boris

  • Anmelden oder Registrieren um Kommentare zu schreiben

Feature übernommen

Eingetragen von C_Logemann (912)
am 13.05.2008 - 11:28 Uhr

Hallo Boris,
danke für den Hinweis. Ich bin mir zwar auch nicht sicher, ob die Methode nun wirklich gut ist, aber ich habe dieses Feature nun auch in meine überarbeitete Funktion zur Umwandlung des $styles-Inhaltes übernommen (leicht zu deaktivieren):
http://drupal.org/node/228818#comment-841195

Der IE5 in meiner Test-Umgebung scheint nichts gegen das "Anhängsel" zu haben. Nun interessieren mich aber Deine Bedenken bezüglich Javascript.

Bis dann,
Carsten

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sonderfall

Eingetragen von drubb (580)
am 13.05.2008 - 19:49 Uhr

Hallo Carsten,

o.k., es ist ein wenig exotisch, aber theoretisch kann man folgendes dreckiges Konstrukt basteln:

<script type="text/javascript" src="meinjs.php?index=3&name=klaus"></script>

Man kann also statt Javascript ein PHP-Script aufrufen, welches als Ausgabe Javascript erzeugt, und kann diesem Parameter übergeben. In diesem Moment kann das Anhängen eines "?X" dazu führen dass das Skript nicht richtig funktioniert. CSS-Dateien sind davon nicht betroffen.

Aber wer macht denn so was :-) ? Zum Beispiel der hier: http://drupal.org/node/242875

Was das Caching angeht, die Methode mit dem Anhängsel ist zweifellos ein Trick, aber mir fällt erst mal auch nichts Besseres ein. Fragt sich nur wie oft in Zukunft die Ausgangsfrage in den Foren auftaucht, denn besonders transparent ist das bestimmt nicht.

Gruß,
Boris

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 17 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 14 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 20 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association