Добрый вечер.
Есть такая задачка: создал поле, имя field_link
мне нужно вытащить содержимое этого поля и "запихнуть" его в код Javascript в тело функции
(function(){
name_function(значение поля, прочие переменные);
});
Пробовал через field_get_items(), но в Dupal возникает какая-то ошибка. Кто знает решение? Заранее спасибо.
Комментарии
javascript в каком месте писать будешь? через drupal_add_js можно передавать переменные даже.
В node--tpl.php или как там точно не помню. Я не совсем понимаю как через этот drupal_add_js писать - постоянно ошибки вылезают, а через обычный все нормально, вот только как вытащить значение поля...
Ну лучше показать на примере:
как вот такой код правильно записать в drupal_add_js()? Ему то $ не нравится то еще что...
И как передать переменные?
$(document).ready(function(){
function_name([peremennaya_nashego_polya]);
});
</script>
Я с Javascript пока на "Вы", но Javascript+Drupal все еще больше усугубляет
Так, у меня все получилось. проблема была в том, что в подключаемом скрипте были символы $, а Drupal их не воспринимает как jQuery. Пришлось заменить все $ на jQuery и заработало!
Но теперь возник вопрос: а можно как-то без вмешательства в сторонний файл скрипта сделать? Дело в том, что он будет обновляться и каждый раз менять руками $ на jQuery что-то не очень вариант...
Самый деревянный способ:
В теме которою используешь на сайте в папку js кладешь файл custom.js
Там же лежит файл имя_темы.info
пишешь там строчку
scripts[] = js/custom.js
Вуаля файл скрипта подключен.
Остальные методы можно узнать здесь 4. Adding JavaScript to your theme or module.
http://drupal.org/node/171213
Мне еще понравилось http://habrahabr.ru/post/161039/
Ну а как Drupal будет реагировать на $ в таком случае? Подключить то можно по-разному. Но вопрос теперь в том, как объяснить Drupal что $ - это на самом деле jQuery без вмешательства в сторонний файл скрипта
Using jQuery
jQuery is now namespaced to avoid conflicts with other Javascript libraries such as Prototype. All your code that expects to use jQuery as $ should be wrapped in an outer context like so.
// All your code here
})(jQuery);
If you don't, you may see the error
Uncaught TypeError: Property '$' of object [object DOMWindow]
is not a function or similar.http://drupal.org/node/756722
К примеру так
$(document).ready(function(){
$('.container').css("background","#000000");
});
}) (jQuery);
Короче оборачивай свою конструкцию и не забывай $
Потом переходи с
$(document).ready(function()
на http://drupal.org/node/304258#drupal-behaviorsPS. [Lullabot] Lullabot.com - jQuery and JavaScript in Drupal