it-swarm-eu.dev

Odstraňte každý skript Javascript kromě vlastních skriptů motivů

Při mé současné instalaci Drupal 6) se načítá mnoho skriptů Javascript (základní skripty, jQuery, moduly atd.).

Ve svém tématu mám pouze jeden skript, který potřebuji, takže chci tento soubor pouze zahrnout a zbavit se všeho ostatního.

Jaký je nejlepší způsob, jak toho dosáhnout?

4
brpinto

Ve vašem template.php můžete přepsat generování $vars['scripts'] být jen vaším souborem.

Mám však podezření, že je to opravdu špatný nápad a může to mít mnoho důsledků.

2
mpdonadio

Do svého template.php můžete vložit něco podobného:

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 dodává jQuery jako výchozí knihovnu JavaScriptu. Není zahrnuta do systému, pokud není kód JavaScript přidán doporučeným způsobem pomocí:

  • Přidání záznamu do pole scripts do souboru s informacemi o motivu (ini)
  • Volání drupal_add_js ()

Jádro a moduly přidává také řadu dalších skriptů.

Můžete je zastavit potlačením phptemplate_preprocess_page funkce v tématech 'template.php

Pokud chcete zahrnout jeden soubor JS kvůli výkonu výkonu načítání hodně skriptu, můžete zapnout Optimize JavaScript files na example.com/admin/settings/performance. Po jeho povolení budete muset vyprázdnit mezipaměť, aby se změny projevily.

1
Shoaib Nawaz

Drupal má pouze jeden sankcionovaný mechanismus pro odstranění konkrétních aktiv, bez ohledu na motivaci k tomu.

Pro CSS:

hook_css_alter

Pro JS:

hook_js_alter

Odebrání všech stylů a skriptů kromě .info styl a skript používají níže kódy:

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

Pokud je téma/modul zakázkový, pak samozřejmě můžete odstranit problematický kód ručně, pokud to dává větší smysl.

0
Yusef

Jedná se o docela starý problém, ale tady opravdu nevidím dobré řešení, takže jsem si myslel, že ho napíšu.

V podstatě to, co musíte udělat ve vaší template.php, je použití hook_js_alter($js), pak použijte devel (nebo s čím chcete raději ladit), abyste viděli, co $js pole má v něm.

Zrušte nastavení toho, co nyní chcete zahrnout. Pokud odeberete drupal.settings, ztratíte spoustu funkcí.

Doporučil bych udržovat jQuery. Pokud musíte použít jinou verzi jQuery, použijte modul aktualizace jquery ( http://drupal.org/project/jquery_update ), nebo pokud importujete JS z jiného zdroje, stačí se ujistit, že vaše verze je načten výše, kde je načteno drupal.settings.

0
kevin.coyle