drupal_add_css ne fonctionne pas
J'ai besoin d'utiliser drupal_add_css pour appeler les feuilles de style unique sur Drupal 6 pages. Je ne veux pas modifier le thème principal de la feuille de style qu'il y aura un ensemble de pages qui ont tous besoin d'complètement nouveaux styles de la feuille principale serait énorme si je mets tout ça au.
Ma solution a été de modifier la page en PHP éditeur de mode et de le faire:
<?php
drupal_add_css("/styles/file1.css", "theme");
?>
<div id="newPageContent">stuff here in html</div>
Mais quand je l'affichage de la source, il n'y a rien là! Pas de fracture d'un lien CSS ou rien, c'est juste refusant d'ajouter la feuille CSS pour le CSS package de mise en page de la tête.
Variations ne semblent pas fonctionner:
drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)
Mon modèle d'en-tête ressemble à ça, je n'ai pas changé quoi que ce soit à partir de la valeur par défaut autre que l'ajout d'un code JavaScript personnalisé.
<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>
Pourquoi cette fonction ne fonctionne pas?
OriginalL'auteur MrFidge | 2009-09-11
Vous devez vous connecter pour publier un commentaire.
Il n'est pas très clair lorsque vous sélectionnez le modèle que vous avez dans votre exemple. Si vous êtes à la sélectionnant à partir d'un module, alors vous pouvez simplement utiliser drupal_add_css dans le module plutôt que sur le modèle.
Si vous avez votre propre thème, vous pouvez utiliser template_preprocess_page et de mettre de la logique dans y ajoutez le CSS (vous pouvez également l'utiliser pour sélectionner le modèle à utiliser).
Une autre note, si vous utilisez template_preprocess_page avec drupal_add_css() assurez-vous que vous l'ajouter à la force dans les styles de tableau comme suit:
drupal_add_css(path_to_theme(). "/css/page.css", "theme"); $vars['styles'] = drupal_get_css();
OriginalL'auteur Jeremy French
J'ai remarqué quelque chose de bizarre et il pourrait résoudre votre problème:
Le premier travail ebcause le style dans le principal de leur dossier
La deuxième ligne ne fonctionnera pas car le style est dans un sous dossier !
Edit:
je pense que ça n'a pas de travail parce que je n'ai pas d'écrire le chemin d'accès le fichier de style correctement :S, donc veuillez ne pas tenir compte de ma réponse
travaille
OriginalL'auteur Christophe
Cette fonction ne marchera pas dans les modèles. La raison en est que la variable $styles qui tiendra toute la feuille de style html auront déjà été généré à ce point, de sorte drupal_add_css l'habitude de travailler comme il l'ajoute à cela. si vous voulez faire dans votre thème, vous aurait probablement pour ajouter le fichier css manuellement
L'autre moyen serait d'utiliser drupal_add_css dans un module, mais vous pourriez avoir un moment difficile l'ajout de la bonne css fichiers sur les pages que vous souhaitez.
Je pense que vous avez raison pour expliquer pourquoi la fonction ne fonctionnera pas mal mais qu'il ne peut pas être fait dans la thématisation de la couche. Voir ma réponse.
J'étais un peu incertain si vous pourrait ou ne pourrait pas l'obtenir pour travailler de cette façon, c'est pourquoi j'ai dit probablement. Mais à l'aide de preprocess_page l'habitude d'une grande aide si vous voulez le faire par page. Vous pourriez aussi bien le faire dans un module.
Je voudrais ajouter que la fonction peut être fait pour travailler dans modèles et prétraiter les fonctions. Ce qu'il ne fonctionne pas dans est le page.tpl.php ou hook_preprocess_page, car vous êtes trop tard: l' $styles variable a déjà été compilé par phptemplate_preprocess_page() (NB D6 terminologie; D7, probablement html.tpl.php et phptemplate_preprocess_html().)
OriginalL'auteur googletorp
Il est possible d'utiliser drupal_add_css() à l'intérieur de votre template.php fichier; cette page a un bon exemple de la façon de le faire.
OriginalL'auteur neoncube
Réponse a été très bien utiliser le CSS Injecteur module - grand petit addon!
Voici un extrait de sa page de projet:
OriginalL'auteur MrFidge
Ce code à l'intérieur template.php fonctionne pour moi:
expliqué:
OriginalL'auteur heaptree
drupal_add_css s'attend à un chemin d'accès relatif au chemin d'accès de base alors que drupal_get_path ne retourne pas le chemin par rapport au répertoire de base de l'.
global $base_path;
drupal_add_css($base_path . drupal_get_path('module /theme','name') . "/styles/file1.css", "module /theme");
Vous pouvez choisir entre le module et thème en conséquence.
OriginalL'auteur junedkazi
Merci pour le lien, wyrmmage. C'est très utile. Je pense que le reste du code dans la page est inutile. Vous avez probablement juste besoin de ces depuis drupal 6 déjà vérifier automatiquement de l'existence des fichiers:
OriginalL'auteur VictoriaChan
Essayer cette
commun.inc drupal_get_css($css = NULL)
Paramètres
$css: (facultatif) Un tableau de fichiers CSS. Si aucun tableau n'est fourni, la valeur par défaut des feuilles de style de tableau est utilisé à la place.
OriginalL'auteur Peniel1127