it-swarm-eu.dev

Jak přidat podmíněný javascript do motivu?

Chtěl bych použít skript Selectivizr k emulaci selektorů CSS3 v IE6-8.

Ale těžko ho přidávám do svého tématu. Dosud vyzkoušené:

1) Vynucení do sekce html.tpl.php:

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

Ale zdá se, že base_path () nevrací nic v D7 (alespoň v html.tpl.php - možná v page.tpl.php ...). A vím, že to není Drupal způsob , jak to udělat.

2) Přidání do souboru .info mého motivu:

scripts[] = selectivizr.js

Ale pak je to bezpodmínečné, samozřejmě :(

3) Používání drupal_add_js () v mém template.php.

Ale znovu, nejsem si jistý, že to může být podmíněně nastaveno?

10
pushka

Myslím, že vaše 1) je nejlepší volba.

Nemusíte volat žádnou funkci, máte již tyto hodnoty:

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

FYI, <?php dsm($variables) ?> v kterémkoli souboru šablony, abyste viděli, jaké proměnné jsou k dispozici. (s nainstalovaným devel modulem)

Existuje modul Podmíněné styly , který má elegantní řešení pro přidání IE podmínek v souboru .info), ale stále pouze pro CSS. (Viz funkce požadavek pro JS)

3
corbacho

Takto jsem do svého souboru template.php přidal html5shiv:

$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

Myslel jsem, že to bylo pečené, ale mýlí se.

Vypadá to, že téma mothership používá toto librabry.

IT dělá věci trochu jinak než vy, ale v zásadě dělá vaši možnost 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]-->';

Zdá se, že tento kód nebude fungovat, pokud váš web není pod /

Ale pokud je knihovna potřebná pro vaše téma, nevidím problém s vložením podmíněného kódu do souboru page.tpl.php.

1
Jeremy French
1
Dylan Tack

Pokud váš soubor JS nemá žádné závislosti, lze jej jako hlavní značku HTML zahrnout takto:

$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');

Pokud máte, řekněme, závislost na jQuery, je rozumné umístit váš kód na konec stránky:

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]-->',
    )     
  );
}
0
Sergey Semashko