задавать вывод скриптов и стилей от макета в нужном месте
Часто в шаблонах бывает так (а также при оптимизации): часть скриптов подключается в шапке, часть в футере, чтоб не мешали загрузке. Скрипты, которые мы вставляем на JS вкладку макета часто должны вызываться после! подгрузки всех скриптов.
Но если мы в макет вставляем вот такую схему, то из вкладки JS скрипты подключаются в первый вывод, а не в последний. если нельзя вызывать в последнем (хотя по мне так это логично), то сделайте настройку , при указании которой скрипты с вкладки JS подгрузятся именно в этом выводе). С CSSми я бы сделала точно также, потому как Prepend не всегда позволяет добиться нужной последовательности.
<html>
<header>
<?php
Core_Page::instance()
->js('скрипт')
->js('скрипт')
->js('скрипт')
->js('скрипт')
->showJs();
?>
</header>
<body>
...
контент
..
<?php
Core_Page::instance()
->js('скрипт')
->js('скрипт')
->showJs();
?>
</body>
</html>
Комментарии
-
На самом деле у Core_Page есть два метода, clearCss() и clearJs(), используя эти методы вы очищаете список и добавляете файлы в нужной вам последовательности и в нужных блоках.
clearJs() пыталась использовать
у меня тупо пропадали скрипты из того кода в котром я указала этот метод
и нигде нет описания и примеров его работыэто не решает раздельного подключения скриптов в макете в секции head и перед закрытием body
Почему не решает? После каждого showJs() массив показанных очищается и можете добавлять новые в другом месте.
если одновременно подключать скрипты и в header и перед /body, то как сделать так, чтобы скрипт из макета подключался ТОЛЬКО перед /body
без showJs() скрипты не подключаются?
с showJs() обязательно подключается и скрипт из макета?
если ответы на оба вопроса положительные, то подключить скрипты в хидере и в боди возможно только при двойном подключении скрипта из макета (в двух местах).0) Вначале делаем Core_Page::instance()->clearJs(); это удалит скрипты от макетов, добавленные системой автоматически.
1) Добавляем все скрипты в нужном нам порядке, в нужном блоке явно подключаем скрипт от макета(ов).
2) Вызываем ->showJs() когда закончили формировать список. Для формирования нового блока, начинаем с п. 1.
> если одновременно подключать скрипты и в header и перед /body, то как сделать так, чтобы скрипт из макета подключался ТОЛЬКО перед /body
Не поверите, но ответ: подключать его только в нужном блоке.ГОТОВЫЕ рабочие примеры - на демойсайт или в описание!!!
короче опытным путем выяснила
что если вы head в первом вызове пишем вот так:
<?php
Core_Page::instance()
->clearJs()
->PrependJs('/js/jquery-migrate-1.4.1.min.js')
->PrependJs('/js/jquery.js')
->showJs()
?>
то скрипты из макета вообще не выводятся ни в одном выводе
и мы тупо должны подставлять из ссылкой в нужный вызов
ну как то дебильнохоть бы подставлялись тогда в следующий вызов
если в нем нет clearjs
а тому кому они совсем не нужны (или бесят ссылки на пустые файлы)
тогда везде будут clearjs ставить
Тупо? А почему в следующий? А давайте будем подставлять в номер блока, который будем вычислять как остаток деления фазы луны на 4?
а как же наследование скриптов по дереву макетов? без clearJs() хорошо хорошо бы подключать скрипты из макетов как обычно, без явного указания
вот вот и я о том же
-
прямо из головы мысль украли ;)
хотел тоже самое написать.
может быть стоит передать в ->showJs() параметр?
->showJs(true) - включать в показ скрипт из директории макета
->showJs(false) - не включать, компрессировать и подключать только указанные выше скрипты
->showJs() - обрабатывать как ->showJs(true)