it-swarm-tr.com

Temaya koşullu javascript nasıl eklenir?

IE6-8'de CSS3 seçicilerini taklit etmek için Selectivizr komut dosyasını kullanmak istiyorum.

Ama bunu temama eklemekte zorlanıyorum. Şimdiye kadar denedim:

1) Bunu html.tpl.php kafa bölümüne zorlamak:

<!--[if lt IE 9]>
<script src="<?php print base_path() . path_to_theme(); ?>/js/selectivizr.js"></script>
<![endif]-->

Ancak base_path (), D7'de bir şey döndürmüyor gibi görünüyor (en azından html.tpl.php'de - belki page.tpl.php ... 'de). Ve biliyorum ki bunu yapmanın Drupal yolu .

2) Temamın .info dosyasına ekleme:

scripts[] = selectivizr.js

Ama sonra koşulsuz, elbette :(

3) template.php dosyamda drupal_add_js () kullanma.

Ama yine de, orada şartlı olarak ayarlanabileceğinden emin değilim?

10
pushka

Bence senin 1) en iyi seçenektir.

Herhangi bir işlevi çağırmanıza gerek yoktur, zaten bu değerlere sahipsiniz:

<script type="text/javascript" src="<?php print $base_path . $directory; ?>/js/selectivizr.js"></script>

FYI, hangi değişkenlerin mevcut olduğunu görmek için herhangi bir şablon dosyasında <?php dsm($variables) ?>. (devel modülü takılıyken)

IE koşullarını .info dosyasına eklemek için zarif bir çözümü olan Koşullu Stil Sayfaları modülü var, ancak yine de yalnızca CSS için. (Bkz özellik istek JS için ==)

3
corbacho

Template.php dosyama html5shiv ekledim:

$html5shiv = array(
  '#tag' => 'script',
  '#attributes' => array( // Set up an array of attributes inside the tag
    'src' => drupal_get_path('theme', 'mythemename') . '/js/lib/html5shiv.js', 
  ),
  '#prefix' => '<!--[if lte IE 8]>',
  '#suffix' => '</script><![endif]-->',
);
drupal_add_html_head($html5shiv, 'html5shiv');
15
jpatiaga

JS dosyanızın bağımlılığı yoksa, HTML'nin baş etiketine şu şekilde dahil edilebilir:

$selectivizr = array(
  '#tag' => 'script',
  '#attributes' => array(
    'src' => file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/selectivizr.js'),
  ),
  '#prefix' => '<!--[if lte IE 9]>',
  '#suffix' => '</script><![endif]-->'
);
drupal_add_html_head($selectivizr, 'selectivizr');

Diyelim ki, jQuery bağımlılığınız varsa, kodunuzu sayfanın altına koymak mantıklıdır:

function THEMENAME_preprocess_html(&$vars){
  $vars['page']['page_bottom']['jquery_dependent_js'] = array(
    'footer' => array(
      '#type' => 'markup',
      '#markup' => '<!--[if lte IE 9]><script src="' .
        file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/jquery_dependent_js.js'). '"></script><![endif]-->',
    )     
  );
}
1
Sergey Semashko

Bu pişmiş ama yanlış olduğunu düşündüm.

mothership teması bu kütüphaneyi kullanıyor gibi görünüyor.

BT sizden biraz farklı şeyler yapar ama aslında seçeneğinizi yapar 1

  $vars['selectivizr'] = '<!--[if (gte IE 6)&(lte IE 8)]>';
  $vars['selectivizr'] .= '<script type="text/javascript" src="/sites/all/libraries/selectivizr/selectivizr.js"></script>';
  $vars['selectivizr'] .= '<![endif]-->';

Siteniz/altında değilse bu kod çalışmaz gibi görünüyor

Ancak, temanız için kütüphane gerekiyorsa, koşullu kodu page.tpl.php dosyasına koymakla ilgili bir sorun görmüyorum.

1
Jeremy French

Template.php dosyasında drupal_add_html_head () kullanırdım. Ne yazık ki, # 865536: drupal_add_js () 'tarayıcılar' seçeneği eksik

1
Dylan Tack