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


9

İç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 anlamıyorum ...

Yanıtlar:


6

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

Karar vermek için bazı mantıklara sahip olacağım ( panellere göre arg()ya page_manager_get_current_page()da panellerden) ve sonra $vars["scripts"]harici betiğin başına geçeceğim . Herhangi bir yerel komut dosyasında bağımlılık sorunuyla karşılaşmamam için başarım.

Ayrıca bazen bir $global_scriptsCDN'den yüklemek istediğim Google API ve SWFObject gibi düşünmeler için çağrılan yeni bir bölge kuracağım ve bu $scriptssayfa şablonunda daha önce 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

Drupal yeniden tanımlamanıza izin vermeyeceğinden 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_nodeyerine preprocess_pageo düğüm tipine almak daha kolaydır çünkü. Bir javascript dosyasına gerçekten başvuruyorsanız, otomatik olarak önbelleğe alınır ( bkz. Parametreler bölümü ).


2

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

VEYA

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.


0

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.