web-dev-qa-db-ja.com

独自のテーマスクリプトを除くすべてのJavascriptを削除する

私の現在のDrupal 6インストールでは、多数のJavascriptスクリプトがロードされています(コアスクリプト、jQuery、モジュールなど)。

私のテーマには必要なスクリプトが1つしかないので、そのファイルのみをインクルードし、他のすべてを削除します。

これを達成するための最良の方法は何ですか?

4
brpinto

template.phpでは、$vars['scripts']の生成をオーバーライドして、ファイルだけにすることができます。

しかし、これは非常に悪い考えであり、多くの結果をもたらす可能性があると思います。

2
mpdonadio

あなたはあなたのtemplate.phpにこのようなものを置くことができます:

function phptemplate_preprocess_page(&$vars) {
  drupal_add_js($theme_path . '/js/your_js.js', 'theme'); 

  $js = drupal_add_js();
  unset($js['core']); 
  unset($js['module']); // or
  unset($js); // but then it would also clear the drupal_add_js above
  $vars['scripts'] = $js;
}
2
Karl Jóhann

DrupalはjQueryをデフォルトのJavaScriptライブラリとして出荷します。以下を使用して推奨される方法でJavaScriptコードを追加しない限り、システムには含まれません。

  • テーマ情報(ini)ファイルのscripts配列にエントリを追加する
  • Drupal_add_js()を呼び出す

他の多くのスクリプトもコアとモジュールによって追加されます。

テーマのphptemplate_preprocess_pageをオーバーライドして、それらを停止することができますtemplate.php

大量のスクリプトをロードするとパフォーマンスが低下するため、単一のJSファイルを含める場合は、Optimize JavaScript filesexample.com/admin/settings/performanceでオンにすることができます。有効にした後、変更を有効にするためにキャッシュをフラッシュする必要があります。

1
Shoaib Nawaz

Drupalには、削除の動機に関係なく、特定の資産を削除するための認可されたメカニズムが1つしかありません。

CSSの場合:

hook_css_alter

JSの場合:

hook_js_alter

.infoスタイルとスクリプトを除くすべてのスタイルとスクリプトを削除するには、以下のコードを使用します:

function hook_css_alter(&$css) {
    $themes=list_themes();
          foreach($css as $key=>$item) {
            if (!in_array($key, $themes['yourthemename']->stylesheets['all'])) {
                unset($css[$key]);
            }
        }
}



function hook_js_alter(&$js) {
    $themes=list_themes();
    foreach($js as $key=>$item) {
        if (!in_array($key, $themes['yourthemename']->scripts)) {
            unset($js[$key]);
        }
    }
}

テーマ/モジュールがカスタムの場合、当然のことながら、問題のあるコードを手動で削除できます。

0
Yusef

これはかなり古い問題ですが、ここで良い解決策を実際に見ることができないので、私はそれを書こうと思いました。

基本的に、template.phpで行う必要があるのは、hook_js_alter($js)を使用してから、devel(またはデバッグに使用するもの)を使用して$js配列に含まれています。

組み込みたいものを解除します。 drupal.settingsを削除すると、多くの機能が失われることに注意してください。

JQueryを維持することをお勧めします。別のバージョンのjQueryを使用する必要がある場合は、jquery更新モジュール( http://drupal.org/project/jquery_update )を使用するか、別のソースからJSをインポートする場合は、バージョンを確認してくださいdrupal.settingsが読み込まれる場所の上に読み込まれます。

0
kevin.coyle