J'ai besoin d'utiliser drupal_add_css pour appeler les feuilles de style sur une seule pages Drupal 6 pages. Je ne veux pas modifier la feuille de style thème principal car il y aura un ensemble de pages individuelles qui ont tous besoin de styles complètement nouveaux - la feuille principale serait massif si je le mettais là-bas.
Ma solution consistait à éditer le Page en mode Editor PHP et faites ceci: p>
<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>
9 Réponses :
Cette fonction ne fonctionnera pas dans les modèles. La raison en est que les styles de dollars variables qui détiennent toute la feuille de style HTML auront déjà été générées à ce stade, de sorte que DRUPAL_ADD_CSS ne fonctionne pas comme cela en ajoute. Si vous voulez le faire dans votre thème, vous devrez probablement ajouter le fichier CSS manuellement l'autre sens serait d'utiliser drupal_add_css dans un module, mais vous pourriez avoir du mal Ajout des fichiers CSS appropriés sur les pages que vous souhaitez. p> p>
Ah bon? J'avais ce travail il y a une semaine sur un autre site: o - j'avais édité Drupal_add_css dans une page en mode PHP.
Je pense que vous avez raison de savoir pourquoi la fonction ne fonctionnera pas, mais elle va tort qu'elle ne peut pas être faite dans la couche de thème. Voir ma réponse.
@Jeremy J'étais un peu incertain si vous pouviez ou ne pouviez pas le faire fonctionner de cette façon, c'est pourquoi j'ai dit probablement. Mais utiliser PreProcess_Page ne vous aidera pas beaucoup si vous voulez le faire par page. Vous pourriez aussi bien le faire dans un module alors.
J'ajouterais que la fonction peut être faite pour fonctionner dans certains modèles i> des fonctions de préprocession. Ce qu'il ne va pas fonctionner est la page.tpl.php ou harok_preprocess_page, car vous êtes donc trop tard: la variable $ Styles a déjà été compilée par PHPTemplate_preprocess_page () (terminologie NB D6; D7, probablement html.tpl. php et phptemplate_preprocess_html ().)
Il n'est pas tout à fait clair où vous sélectionnez le modèle que vous avez dans votre exemple. Si vous le sélectionnez à partir d'un module, vous pouvez simplement utiliser DRUPAL_ADD_CSS dans le module plutôt que le modèle. P>
Si vous avez votre propre thème, vous pouvez utiliser template_preprocess_page et mettre la logique dans Là pour ajouter le CSS pertinent (vous pouvez également l'utiliser pour sélectionner le modèle à utiliser). P>
Hiya, je suis vraiment désolé mais j'avais absolument de travailler directement d'une page l'autre semaine. Je pensais que "oh génial c'est facile" et construit le reste de mon site. Maintenant, je retourne pour le mettre en œuvre et ça ne marche pas. Typique: p
Une autre note à cela, si vous utilisez template_preprocess_page avec drupal_add_css () Assurez-vous que vous ajoutez de la force dans le tableau de styles comme: drupal_add_css (path_to_theme (). "/Cs/page.css", "thème"); $ var ['styles'] = drupal_get_css (); code>
La réponse était très utile d'utiliser le injecteur CSS module - super petit addon! p>
Voici un extrait de sa page de projet: p>
permet aux administrateurs d'injecter CSS dans la sortie de la page en fonction de règles configurables. Il est utile d'ajouter de simples modifications CSS sans modifier le thème officiel d'un site. Le CSS est ajouté à l'aide de la fonction DRUPAL_ADDD_CSS Standard () de Drupal et respectant la mise en cache de page, etc. Le 2.x Brach tige des ctools de sorte que CSS peut être inclus dans les modifications de fonctionnalités (c.-à-d. CSS qui améliore l'apparence d'une vue peut être emballée avec la vue. ). p> blockQuote>
Il est possible d'utiliser drupal_add_csss () dans votre fichier template.php; Cette page a un bon exemple de comment faire cela. < / p>
Merci pour le lien, Wyrmage. C'est très utile. Je pense que le reste du code dans la page est uniforme. Vous en avez probablement besoin depuis que DRUPAL 6 vérifie déjà automatiquement l'existence de fichier:
Ce code à l'intérieur de template.php fonctionne pour moi: expliqué: p>
J'ai remarqué quelque chose de bizarre et cela pourrait résoudre votre problème:
drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');
DRUPAL_ADD_CSS s'attend à un chemin d'accès par rapport au chemin de la base, tandis que drupal_get_path ne renvoie pas le chemin relatif au chemin de la base. P>
Vous pouvez choisir entre le module et le thème en conséquence. P>
global $ base_path;
drupal_add_css ($ base_path. drupal_get_path ("module / thème", "nom"). "/styles/file1.css", "module / thème");
code> p>
Si vous avez travaillé, demandez à vos paramètres de mise en cache?