2009-09-11 18 views
7

drupal_add_cssを使用して、単一のDrupal 6ページにスタイルシートを呼び出す必要があります。メインテーマのスタイルシートを編集する必要はありません。個々のページには完全に新しいスタイルが必要です。メインシートはすべてそこに置くと大量になります。drupal_add_css not working

私のソリューションは、PHPエディタモードでページを編集することであり、この操作を行います。

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

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

をしかし、私はソースを表示するとき、何もありません!壊れたCSSリンクでも、それ以外のものでも、CSSのシートをCSSのページに追加することを拒否しているだけです。

バリエーションは、いずれかの動作していないようです:

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

マイテンプレートヘッダは次のようになり、私は、カスタムJavaScriptを追加する以外のデフォルトから何も変わっていませんでした。

<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> 

この機能が動作しないのはなぜですか?

+1

動作していた場合は、キャッシュ設定を変更してください。 –

答えて

2

答えは非常に多くのCSS Injectorモジュールを使用していた - 素晴らしい小さなアドオン!ここで

は、そのプロジェクトページからの抜粋です:

は、管理者が設定可能なルールに基づいて、ページ出力にCSSを注入することができます。サイトの公式テーマを変更せずに簡単なCSS調整を追加すると便利です。 CSSはDrupalの標準のdrupal_add_css()関数を使用して追加され、ページキャッシングなどを考慮しています。2.x brachはCToolsを利用して、CSSをFeatureの変更に含めることができます。つまり、Viewの外観を改善するCSSをView )。

4

この機能はテンプレートでは機能しません。その理由は、すべてのスタイルシートhtmlを保持する変数$ stylesがすでにこの時点で生成されているため、drupal_add_cssはそれに追加されるので動作しません。あなたのテーマでこれを行うにしたい場合、あなたはおそらく手動

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

他の方法は、モジュール内でdrupal_add_css使用することですが、あなたは正しいCSSを追加することに苦労している場合がありますcssファイルを追加する必要がありますあなたが望むページのファイル。

+0

本当ですか?私は1週間前に別のサイトで作業していました:o - drupal_add_cssをPHPモードのページに編集しました。 – MrFidge

+0

私はあなたがなぜ機能がうまくいかないのか、それはテーマ層ではできないのは間違っていると思います。私の答えを見てください。 –

+0

@ジェレミーあなたがそうした方法で働くことができるかできないのか、私は少し不安でした。それがおそらく私が言った理由です。しかしpreprocess_pageを使用すると、ページごとにそれをやりたい場合にはあまり役に立ちません。あなたはモジュールでそれを行うこともできます。 – googletorp

7

あなたの例にあるテンプレートをどこから選んでいるのかはっきりしません。モジュールからそれを選択している場合は、テンプレートではなくモジュールでdrupal_add_cssを使用できます。

独自のテーマをお持ちの場合は、template_preprocess_pageを使用して、関連するCSSを追加するロジックを使用できます(このテンプレートを使用して、使用するテンプレートを選択することもできます)。

+0

ひあ、本当に申し訳ありませんが、私は絶対にこれをもう一週間のページから作業しました。私は "ああ、それは簡単だ"と思って、私のサイトの残りの部分を作りました。今私はそれを実装するために戻って、それは動作していません。典型的な例:P – MrFidge

+8

drupal_add_css()でtemplate_preprocess_pageを使用している場合、このようにスタイル配列に強制的に追加してください: 'drupal_add_css(path_to_theme()。" /css/page.css "、" theme " ); \t $ vars ['styles'] = drupal_get_css(); ' – joelpittet

3

template.phpファイル内でdrupal_add_css()を使用できます。 this pageには、これを行う方法の良い例があります。

0

リンクありがとうございました。それは非常に便利です。私は、ページの残りのコードは不必要であると思います。 drupal 6はすでに自動的にファイルの存在をチェックしているので、おそらくこれらは必要です。

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(); 
1

このコードはテンプレート内にあります。PHPは、私の作品:

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(); 
} 

は、次のように説明し

  1. アラーニャがテーマの名前です
  2. header_1.cssは、必要なCSSファイルです。
6

私は奇妙な何かに気づいたし、それはあなたの問題を解決することがあります

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); 

スタイルがあるので、最初のものがメインで、スタイルebcause二行目は動作しませんそれらのフォルダ それを動作しますサブフォルダに!

編集:私はパスを書いていないので、それがうまくいかなかったと思います

適切スタイルファイルは:そう

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

1

drupal_add_cssがある働いている私の答えは無視してくださいS drupal_get_pathはベースパスを基準にした相対パスを返しません。

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

あなたはそれに応じて、モジュールやテーマを選択することができます。 CSSファイルの(オプション)配列:

+1

そこに$ base_pathは必要ありませんか? – jlstrecker

0

この common.inc drupal_get_css($css = NULL)

パラメータ

$ CSSを試してみてください。配列がない場合は、代わりにデフォルトのスタイルシート配列が使用されます。

$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);