Как javascript код вставить в оптимизированный файл?

Главные вкладки

Аватар пользователя igorek igorek 10 декабря 2010 в 23:52

Это конечно читал 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);
?>

По-моему можно проще?
И ещё вопрос, как прописать в модуле, что он должен быть последним записат?

Комментарии

Аватар пользователя natbampo natbampo 11 декабря 2010 в 8:48

"igorek" wrote:
И ещё вопрос, как прописать в модуле, что он должен быть последним записат?

можешь в hook_footer-е drupal_add_js(..., 'footer') - вставится в шаблоне там где переменная $closure.
А так вообще среди одноименных хуков они вызываются по порядку значений weight модулей в таблице system.
jquery_update покажет как можно полностью в конце перестроить даные для переменной $scripts

Аватар пользователя igorek igorek 11 декабря 2010 в 11:57

"xxandeadxx" wrote:
нет
- ну да...
Получилось вот так:

<?php
$path 
file_directory_path().'/js/js.js';
    if (
file_save_data("if (Drupal.jsEnabled) { $(document).ready(function() { $('body').addClass('$skin'); } ); };"$pathFILE_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

<script type="text/javascript"
src="/sites/default/files/js/js_b127db125a4c3a83ad8a52e98d994ad8.js">
</script>
Аватар пользователя natbampo natbampo 11 декабря 2010 в 12:05

"igorek" wrote:
Получилось вот так:

странный код какой то ...
Зачем каждый раз в нем создавать js файл(переписывая имеющийся) если его можно самому вручную создать один раз?

Аватар пользователя igorek igorek 11 декабря 2010 в 15:26

"natbampo" wrote:
Зачем каждый раз в нем создавать js файл

Ещё раз пишу код php


<?php
drupal_add_js
("if (Drupal.jsEnabled) { 
$(document).ready(function() { 
$('body').addClass('
$skin'); } ); 
};"
"inline");
?>

Уточняю место точнее переменную


<?php
$skin
?>

Этим я хочу показать, что js код формируется в php
Если бы можно было создать js файл сразу, то я не задавал бы глупых вопросов Smile

Аватар пользователя natbampo natbampo 11 декабря 2010 в 15:58

"igorek" wrote:
Этим я хочу показать, что js код формируется в php

и это печально. Данные о классе можно передать через глобальную переменную(через inline тот же), а также через html в шаблон. И будет код отдельно, данные отдельно.

Аватар пользователя igorek igorek 13 декабря 2010 в 17:09
<?php
drupal_add_js
(array(
  
'my_namespace' => array(
    
'my_variable' => 'my_value'
  
)
), 
'setting');
?>

Это тоже выведет код на странице между тегами script
а я за чистоту html кода

"igorek" wrote:
вставить не кодом в html страницу, а внутрь оптимизированного файла.js

Аватар пользователя natbampo natbampo 13 декабря 2010 в 18:02

"igorek" wrote:
а я за чистоту html кода

не за ту ты чистоту... Вообще то ты наверное не понял, что делаешь не так. js код не надо формировать динамически, со всеми странными проблемами из этого вытекающими.
А данные передаются скрипту
"igorek" wrote:
Это тоже выведет код на странице между тегами script

что абсолютно нормально. Страница на то и страница, чтобы формироваться динамически, в отличие от js-кода. Wink