web-gelistirme-sc.com

Belirli bir içerik türüne JavaScript ekleme

İçerik türüne göre belirli bir sayfaya bir JavaScript dosyası eklemenin en iyi yolunun ne olduğunu bilmek istiyorum. Örneğin, bunu eklemek istiyorum:

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

Şimdiye kadar yaptığım şey, belirli içerik türüme eklemek için bu yolu kullanmak. Map_page içerik türü için, aşağıdaki iki kod satırını eklerim - map_page.tpl.php.

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

Daha iyi bir yol var mı? mümkünse bazı örnekler verebilir, şu anda gerçekten iyi anlayamıyorum ...

9
arkchong

Uygun Drupal 7 eşdeğeri hakkında yorum yapamam, ancak Drupal 6 sitede bunu bir template_preprocess_page içinde yapıyorum.

(Panellerden arg() veya page_manager_get_current_page() 'e dayanarak) karar vermek için mantığım olacak ve daha sonra harici komut dosyasına $vars["scripts"] Herhangi bir yerel komut dosyasında bağımlılık sorunuyla karşılaşmamam için başarım.

Ayrıca bazen bir CDN'den yüklemek istediğim Google API ve SWFObject gibi düşünceler için $global_scripts Adlı yeni bir bölge kuracağım ve bu sayfa şablonunda $scripts Öncesinde yazdırılıyor.

Dürüst olmak gerekirse, normalde tüm sayfalarda tüm JS var, böylece dosyalar önbelleğe alınır.

6
mpdonadio

Drupal, template_preprocess_node (zaten node.module içinde tanımlanmış olduğundan), özel modülüme bir önişlemci işlevi ekledim:

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

Kullandım preprocess_node ziyade preprocess_page çünkü düğüm tipine ulaşmak daha kolay. Bir javascript dosyasına gerçekten başvuruyorsanız, otomatik olarak önbelleğe alınır ( bkz. Parametreler bölümü ).

6
Jukebox

içerik türü için hook_node_view denetimini kullanabilir ve js'yi zaten yaptığınız şekilde ekleyebilirsiniz.

OR

JS'yi kullanacak bilgileri çıkaran bir alanınız varsa, js eklemek için orada bir önişlemci kullanır, böylece js include, içerik türü yerine haritayı görüntüleyen alana bağlıdır.

2
Jeremy French

Basit bir çözüm sadece add_js yerleştirmektir:

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

sayfa/düğüm template.php dosyasında.

0
Nevos