編集:私の質問はDrupal 6 & 7に適用されますが、私のコード例はDrupal 6です。Drupal 6&7 unset Javascript from header
私は現在、Drupal 6のウェブサイトのモバイルテーマを作成していて、template.phpファイルのpreprocess_page
機能で不要なコアとモジュールのJavaScriptとCSSをすべて削除しようとしています。 CSSファイルは正常に削除されますが、JavaScriptを削除することはできません。ここに私が持っているものがあります。この例では、ajaxスクリプト以外はすべて正常に削除されています。
私が間違っていることを知っていますか?
<?php
function mytheme_preprocess_page(&$vars) {
//////// remove unneccesary drupal head files for mobile version
// CSS
$css = drupal_add_css();
// core
unset($css['all']['module']['modules/user/user.css']);
unset($css['all']['module']['modules/node/node.css']);
unset($css['all']['module']['modules/system/defaults.css']);
unset($css['all']['module']['modules/system/system.css']);
unset($css['all']['module']['modules/system/system-menus.css']);
// contributed -- automatically generate the path—— just easier this way
$rm[] = drupal_get_path('module','filefield').'/filefield.css';
$rm[] = drupal_get_path('module','flickr').'/flickr.css';
$rm[] = drupal_get_path('module','logintoboggan').'/logintoboggan.css';
$rm[] = drupal_get_path('module','logintoboggan').'/logintoboggan.css';
$rm[] = drupal_get_path('module','fieldgroup').'/fieldgroup.css';
$rm[] = drupal_get_path('module','views').'/css/views.css';
$rm[] = drupal_get_path('module','content').'/theme/content-module.css';
// remove the contribs from the array
foreach ($rm as $key => $value) {
unset($css['all']['module'][$value]);
}
// JAVASCRIPT
$scripts = drupal_add_js();
unset($scripts['module']['sites/all/modules/ajax/ajax.js']);
unset($scripts['module']['sites/all/modules/ajax/jquery/jquery.a_form.packed.js']);
// recreate the tempalate variables
$vars['styles'] = drupal_get_css($css);
$vars['scripts'] = drupal_get_js('header', $scripts);
}
?>
ETA:
<script type="text/javascript" src="/sites/all/modules/ajax/jquery/jquery.a_form.packed.js?P"></script>
<script type="text/javascript" src="/sites/all/modules/ajax/ajax.js?P"></script>
感謝を必要としないjavascriptの他のモジュールをきれいにすることができますDrupalの7 でdrupalのヘッダーを使用することができます。これは役に立ちます。私はまだ、Develの助けを借りても、フックや物事が出力される方法についてのダミーです。私は実際にはモジュールではなく、template.phpファイルでそれをやっています。特に、2つの使用されたテーマのうちの1つに固有のものなので、そのままにしておきたいと思います。そのように体重を定義することは可能ですか?また、実際のajax_preprocess_page()関数をインターセプトできる方法はありますか? mytheme_ajax_preprocess_page()を使ってみましたが、うまくいきませんでした。私が言ったように、この時点で処理とフックでダミー。 – Kerri
@Kerri申し訳ありませんが、あなたがtempalte_preprocess_pageを使用していて、hook_preprocessページを使用していると思われませんでした。詳細については、上記の更新された回答を参照してください。 –
ああ、ありがとう。少なくともそれは私が何をやっているのか知っていることを意味します! ;)元の投稿にスクリプトのパスを追加しました。チェックしてパスをダブルチェックしても(コピー/ペーストしても)、多分私は何かを見逃しています。私はそれが半分(CSSの半分)働くので、私は正しいテンプレートに関数を置くことを知っている。ああ、はい、すべてのパフォーマンスキャッシュがオフになっています。私はブラウザキャッシュを念入りにリフレッシュしています。 – Kerri