9

私は次のことを達成しようとしています。プロジェクトの要件として Drupal 6 を使用する必要がありますが、ノード/ビュー/パネルなどごとに独自の HTML および CSS スタイルシートで使用したいと考えています。

問題は、テーマが何であれ、Drupal が CSS スタイルシートと選択したテーマに関連する CSS の両方に適用されることです。また、stylestripper モジュール (sites/all/modules にインストールされています) を使用してみましたが、成功しませんでした。何をしても、追加の CSS スタイルシートがページに適用され、レイアウトが完全に破壊されます。

これを達成する適切な方法は何ですか?stylestripper がまったく機能しないのはなぜですか? 完全に空のテーマを利用できますか? 基本、マザーシップ、禅などを試しましたが、ページに追加の CSS スタイルシートが適用されていることが常にわかります。

これは私を夢中にさせます。Drupal は、その柔軟性のために他の誰かによって選ばれました。前もって感謝します。

4

3 に答える 3

6
<?php
/**
 * Helper function to allow easy CSS excludes + includes
 */
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
   $file = substr($k, strrpos($k, '/') + 1);
   if (in_array($file, $exclude)){
     unset($css['all']['module'][$k]);
   }
}
foreach ($include as $file){
   $css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>

詳しくはdrupal.orgをご覧ください。

更新:
この関数を配置する適切な場所はtemplate.php、テーマのファイルです。実際、あなたの場合、除外したいcssファイル名の配列を渡す必要があります。引数を渡さずに を
呼び出すと、テーマに添付される CSS ファイルの配列が提供されます。ということで、今が入社のチャンス! drupal_add_css()$css

ご覧のとおり、最初のforeachループでは、スタイルを削除するため$cssに、渡された配列に存在するファイル名の配列を検索するだけです。$excludeそして、スタイル挿入の 2 番目のループで同じ作業を行います。そして最後に、関数を使用してテーマに添付する必要があるすべてのスタイルのテーマ表現を返しdrupal_get_css()ます。(あなたの場合は何もないかもしれません)

さて、この関数をどこで呼び出すのでしょうか? このヘルパー関数は_phptemplate_variables()、D5 またはYOUR_THEME_preprocess()D6 に対して呼び出すことができます。D6 (未テスト)の動作でこれを見ると:

function YOUR_THEME_preprocess(&$vars, $hook){
    // Stylesheet filenames to be excluded.
    $css_exclude_list = array(
        'lightbox.css',
        'lightbox_lite.css',
    );

    // Making use of previously defined helper function.
    $vars['styles'] = _phptemplate_get_css($css_exclude_list);
}

それらをすべて除外する方法を知っていると思います;)

于 2010-02-27T08:51:42.430 に答える
1

コア ファイルと一致するファイル名を使用して、テーマの .info ファイルで CSS および/または JavaScript ファイルを定義する場合、それらをオーバーライドします。オーバーライドが存在しない場合、それらは含まれません。

例については、Tao テーマの .info ファイルを参照してください。

于 2011-09-26T09:07:23.130 に答える
0

これは機能しませんが、テーマの page.tpl.php で次の行を削除するだけだと思います

 <?php echo $styles ?>

そして、drupalは独自のスタイルのいずれも使用しません..
これはあなたにとってうまくいくかもしれません.


ニッツ

于 2010-04-29T22:39:32.987 に答える