Размещение условного скрипта в заголовке раздела макета

В моем макете я использую кучу JavaScripts. Два из этих сценариев являются условными, и их следует загружать только для IE9. А оставшийся должен быть загружен для всех браузеров.

Чтобы добиться этого, я сделал следующее в своем классе Bootstrap.

$this->_view->headScript ()->appendFile ( '//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js', 'text/javascript', array('conditional' => 'lt IE 9'));
$this->_view->headScript ()->appendFile ( '//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js', 'text/javascript', array('conditional' => 'lt IE 9') );
$this->_view->headScript ()->appendFile ( $this->_view->baseUrl ( '/assets/js/scripts.min.js?ver=1.0.0' ) );

Это работает, и я получаю следующий вывод в моем макете.

<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><![endif]-->
<!--[if lt IE 9]> <script type="text/javascript" src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script><![endif]-->
<script type="text/javascript" src="http://om.localhost.com/assets/js/scripts.min.js?ver=1.0.0"></script>

Вывод выше в порядке. Но рекомендуется размещать условные сценарии в разделе заголовка макета, а остальные сценарии - в конце тела.

Есть ли способ добиться этого в ZF1?

PS Я пытался использовать заполнители, но это не сработало. И я не хочу жестко кодировать эти скрипты в макете.

Спасибо за вашу помощь.

1 ответ

Решение

В головной раздел, вы можете использовать headScript() метод, как ваш код.
До конца тела вы можете использовать InlineScript() метод как это:

$this->view->InlineScript()->appendFile($this->view->baseUrl() .'/js/myfile.js');

и в конце вашего макета добавьте:

<?php
    echo $this->InlineScript(); 
?>

Чтобы добавить скрипт в загрузчик, вы можете сделать что-то вроде этого:

protected function _initView()
{
    $options = $this->getOptions();
    if (isset($options['resources']['view'])){
        $view = new Zend_View($options['resources']['view']);
    }
    else{
        $view = new Zend_View;
    }
    $view->InlineScript()->appendFile(...);
}
Другие вопросы по тегам