Frage

Ich brauche verwenden drupal_add_css Sheets auf einzelne Drupal 6 Seiten aufzurufen. Ich will nicht das Hauptthema Sheet bearbeiten, wie es eine Reihe von einzelnen Seiten sein, die alle völlig neue Arten benötigen -. Die Großschot würde massiv sein, wenn ich sie alle in dort setze

Meine Lösung war, die Seite in PHP-Editor-Modus zu bearbeiten und tun:

<?php 
drupal_add_css("/styles/file1.css", "theme");
?>

<div id="newPageContent">stuff here in html</div>

Aber wenn ich Quelle zu sehen, es ist nichts da! Nicht einmal ein gebrochener CSS Link oder etwas, es ist nur die Ablehnung des CSS Blatt zu dem CSS-Paket hinzuzufügen setzte in den Seitenkopf.

Variationen scheinen nicht zu funktionieren:

drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)

Meine Vorlagen-Kopfzeile wie folgt aussieht, habe ich etwas anderes vom Standard geändert nicht als eine benutzerdefinierte JavaScript hinzugefügt wird.

<head>
    <?php print $head ?>
    <title><?php print $head_title ?></title>
    <?php print $styles ?>
    <?php print $scripts ?>
    <script type="text/javascript" src="<?php print base_path() ?>misc/askme.js"></script>    
    <!--[if lt IE 7]>
      <?php print phptemplate_get_ie_styles(); ?>
    <![endif]-->
</head>

Warum ist diese Funktion nicht?

War es hilfreich?

Lösung 5

Antwort war sehr viel die CSS Injector Modul - großen kleine Addon!

Hier ist ein Auszug aus seiner Projektseite:

  

Ermöglicht Administratoren CSS in die Seitenausgabe auf konfigurierbaren Regeln basiert zu injizieren. Es ist nützlich für das Hinzufügen von einfachen CSS-Änderungen ohne eine Website offizielles Thema zu ändern. Die CSS wird hinzugefügt Drupal Standard drupal_add_css () Funktion und respektiert Seite Caching usw. Die 2.x Brach nutzt CTOOLS so kann CSS mit Feature Änderungen aufgenommen werden (dh. CSS, die das Aussehen einer Ansicht verbessert mit der Ansicht verpackt werden ).

Andere Tipps

Es ist nicht ganz klar, wo Sie die Vorlage auswählen, die Sie in Ihrem Beispiel haben. Wenn Sie es aus einem Modul werden die Auswahl dann können Sie nur im Modul verwenden drupal_add_css anstatt die Vorlage ein.

Wenn Sie Ihr eigenes Thema haben, können Sie verwenden, template_preprocess_page und setzen Logik in dort die entsprechende CSS hinzufügen (Sie können es auch zu verwenden, um die Vorlage auszuwählen, verwenden).

Ich habe etwas Seltsames bemerkt und es könnte Ihr Problem beheben:

drupal_add_css( drupal_get_path('theme','themname') . '/working.css','module' ,'all' , false );

drupal_add_css( drupal_get_path('theme','themname') . '/path/to/folder/notworking.css','module' ,'all' , false );

Die erste wird ebcause Stil im Haupt sie Ordner arbeiten Die zweite Linie wird nicht funktionieren, weil der Stil in einem Unterordner ist!

Edit:

Ich denke, es hat nicht funktioniert, weil ich nicht den Weg schreiben hat die Stil-Datei richtig: S so wenden Sie sich bitte meine Antwort ignorieren

drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');

funktioniert

Diese Funktion wird nicht in Vorlagen arbeiten. Der Grund dafür ist, dass die Variable $ Stile, die wurden bereits an dieser Stelle erzeugt wird alle Sheet html halten wird, so drupal_add_css nicht funktionieren, wie es das summiert. wenn Sie dies in Ihrem Thema tun möchten, würden Sie wahrscheinlich manuell die CSS-Datei hinzufügen müssen

<link rel="stylesheet" ... />

Der andere Weg wäre drupal_add_css in einem Modul zu verwenden, aber Sie könnten eine harte Zeit, das Hinzufügen der richtigen CSS-Dateien auf den Seiten Sie haben.

Es ist möglich, drupal_add_css () in Ihrer template.php-Datei zu verwenden; diese Seite ein gutes Beispiel dafür hat, wie das zu tun gerade.

Mit diesem Code in template.php funktioniert für mich:

function alagna_preprocess_page(&$vars) {
        drupal_add_css(path_to_theme() . '/header_1.css', 'theme');
        $vars['css'] = drupal_add_css();
        $vars['styles'] = drupal_get_css();
} 

erklärt:

  1. alagna ist das Thema Name
  2. header_1.css ist die CSS-Datei erforderlich.

drupal_add_css erwartet einen Pfad relativ zum Basispfad während drupal_get_path nicht den Pfad relativ zum Basispfad zurückkehrt.

global $base_path;
drupal_add_css($base_path . drupal_get_path('module / theme','name') . "/styles/file1.css", "module / theme");

Sie können dementsprechend zwischen Modul und Thema wählen.

Danke für den Link, wyrmmage. Das ist sehr nützlich. Ich denke, der Rest des Codes auf der Seite unnötigen ist. Sie haben wahrscheinlich nur diese müssen seit Drupal 6 bereits automatisch für die Datei Existenz überprüfen:

drupal_add_css(path_to_theme() . '/css/yourcss.css', 'theme');
// Add the following to regenerate $styles. 
// This is needed for template_preprocess_page() since css is already generated at this point.
$variables['styles'] = drupal_get_css(); 

Try this common.inc drupal_get_css ($ css = NULL)

Parameter

$ css:.. (Optional) Ein Array von CSS-Dateien Wenn kein Array vorgesehen ist, wird das Standard-Stylesheets Array verwendet stattdessen

    $css    =   $vars['css'];
// unset the system css files
$unset_css = array
    'modules/system/system.css',
    'modules/system/system-menus.css',
);

foreach($unset_css as $css_f) {
    if(isset($css['all']['module'][$css_f])) {
        unset($css['all']['module'][$css_f]);
    }
}

// add css
$css['all']['theme'][drupal_get_path('theme', 'openpublish_theme') . '/css/style.css'] = true;
$vars['styles'] = drupal_get_css($css);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top