it-swarm-eu.dev

Přidejte JavaScript do konkrétního typu obsahu

Chtěl bych vědět, jaký je nejlepší způsob, jak přidat soubor JavaScript na konkrétní stránku založenou na typu obsahu. Například chci přidat toto:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Zatím jsem pomocí tohoto způsobu přidal do mého specifického typu obsahu. Pro typ obsahu map_page přidávám na stránku dva řádky kódu - map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

Existuje ještě lepší způsob? pokud je to možné, můžete uvést nějaký příklad, v současné době to opravdu nerozumíme ...

9
arkchong

Nemohu komentovat vlastní Drupal 7, ale na Drupal 6 webů to dělám na template_preprocess_page ).

Budu mít nějakou logiku, abych se mohl rozhodnout (buď na základě arg() nebo page_manager_get_current_page() z panelů), a pak připojit $vars["scripts"] s externím skriptem. Připravuji se, abych se s místními skripty nedostal do potíží.

Někdy také zřídím nový region s názvem $global_scripts pro přemýšlení jako Google API a SWFObject, které chci načíst z CDN, a to se vytiskne před $scripts v šabloně stránky.

Abych byl upřímný, obvykle mám všechny JS na všech stránkách, aby se soubory ukládaly do mezipaměti.

6
mpdonadio

Protože Drupal vám nedovolí předefinovat template_preprocess_node (protože je to již definováno v node.module), přidal jsem do svého vlastního modulu funkci preprocesoru:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Použil jsem preprocess_node spíše než preprocess_page protože je snazší se dostat k typu uzlu. Pokud skutečně odkazujete na soubor javascript, bude automaticky uložen do mezipaměti ( viz část Parametry ).

6
Jukebox

můžete také použít hook_node_view kontrolu pro typ obsahu a pak přidat js způsobem, jak již děláte.

OR

Pokud máte pole, které vydává informace, které budou používat JS, použijte tam pro přidání js preprocesor, takže zahrnutí js je závislé na poli zobrazujícím mapu spíše než na typu obsahu.

2
Jeremy French

Jednoduchým řešením je umístit add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

na stránce/uzlu template.php.

0
Nevos