Это конечно читал http://api.drupal.ru/api/function/drupal_add_js/6 - видимо не совсем понял...
Вопрос собственно вот в чём:
Хотелось бы например такую строчку
<?php
drupal_add_js("if (Drupal.jsEnabled) {
$(document).ready(function() {
$('body').addClass('$skin'); } );
};", "inline");
?>
вставить не кодом в html страницу, а внутрь оптимизированного файла.js. Придул записать это в файл и подключить как
<?php
drupal_add_js(путь_к_файлу.js);
?>
По-моему можно проще?
И ещё вопрос, как прописать в модуле, что он должен быть последним записат?
Комментарии
нет
проблема, честно говоря, совсем непонятна. что нужно-то? ))
можешь в hook_footer-е drupal_add_js(..., 'footer') - вставится в шаблоне там где переменная $closure.
А так вообще среди одноименных хуков они вызываются по порядку значений weight модулей в таблице system.
jquery_update покажет как можно полностью в конце перестроить даные для переменной $scripts
Получилось вот так:
<?php
$path = file_directory_path().'/js/js.js';
if (file_save_data("if (Drupal.jsEnabled) { $(document).ready(function() { $('body').addClass('$skin'); } ); };", $path, FILE_EXISTS_REPLACE)) {
drupal_add_js($path);
}
else{
drupal_add_js("if (Drupal.jsEnabled) { $(document).ready(function() { $('body').addClass('$skin'); } ); };", "inline");
}
?>
То есть при включении оптимизации js файлов это не на странице в коде html, а в оптимизированном файле js_b127db125a4c3a83ad8a52e98d994ad8.js
src="/sites/default/files/js/js_b127db125a4c3a83ad8a52e98d994ad8.js">
</script>
странный код какой то ...
Зачем каждый раз в нем создавать js файл(переписывая имеющийся) если его можно самому вручную создать один раз?
Ещё раз пишу код php
<?php
drupal_add_js("if (Drupal.jsEnabled) {
$(document).ready(function() {
$('body').addClass('$skin'); } );
};", "inline");
?>
Уточняю место точнее переменную
<?php
$skin
?>
Этим я хочу показать, что js код формируется в php
Если бы можно было создать js файл сразу, то я не задавал бы глупых вопросов
и это печально. Данные о классе можно передать через глобальную переменную(через inline тот же), а также через html в шаблон. И будет код отдельно, данные отдельно.
+1 http://rmcreative.ru/blog/post/drupal-peredacha-parametrov-v-javascript
<?php
drupal_add_js(array(
'my_namespace' => array(
'my_variable' => 'my_value'
)
), 'setting');
?>
Это тоже выведет код на странице между тегами script
а я за чистоту html кода
не за ту ты чистоту... Вообще то ты наверное не понял, что делаешь не так. js код не надо формировать динамически, со всеми странными проблемами из этого вытекающими.
А данные передаются скрипту
что абсолютно нормально. Страница на то и страница, чтобы формироваться динамически, в отличие от js-кода.