Как вытащить значение переменой поля и вставить в javascript?

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

Аватар пользователя scream89 scream89 23 февраля 2013 в 22:16

Добрый вечер.

Есть такая задачка: создал поле, имя field_link

мне нужно вытащить содержимое этого поля и "запихнуть" его в код Javascript в тело функции

(function(){
name_function(значение поля, прочие переменные);
});

Пробовал через field_get_items(), но в Dupal возникает какая-то ошибка. Кто знает решение? Заранее спасибо.

Комментарии

Аватар пользователя scream89 scream89 24 февраля 2013 в 16:09

"Chyvakoff" wrote:
javascript в каком месте писать будешь? через drupal_add_js можно передавать переменные даже.

В node--tpl.php или как там точно не помню. Я не совсем понимаю как через этот drupal_add_js писать - постоянно ошибки вылезают, а через обычный все нормально, вот только как вытащить значение поля...

Ну лучше показать на примере:
как вот такой код правильно записать в drupal_add_js()? Ему то $ не нравится то еще что...
И как передать переменные?

<script type="text/javascript">

$(document).ready(function(){
function_name([peremennaya_nashego_polya]);
});

</script>

Я с Javascript пока на "Вы", но Javascript+Drupal все еще больше усугубляет Smile

Аватар пользователя scream89 scream89 24 февраля 2013 в 23:02

Так, у меня все получилось. проблема была в том, что в подключаемом скрипте были символы $, а Drupal их не воспринимает как jQuery. Пришлось заменить все $ на jQuery и заработало!

Но теперь возник вопрос: а можно как-то без вмешательства в сторонний файл скрипта сделать? Дело в том, что он будет обновляться и каждый раз менять руками $ на jQuery что-то не очень вариант...

Аватар пользователя raskolbasster raskolbasster 24 февраля 2013 в 23:13

Самый деревянный способ:

В теме которою используешь на сайте в папку js кладешь файл custom.js

Там же лежит файл имя_темы.info

пишешь там строчку

scripts[] = js/custom.js

Вуаля файл скрипта подключен.

Остальные методы можно узнать здесь 4. Adding JavaScript to your theme or module.

Аватар пользователя scream89 scream89 26 февраля 2013 в 21:01

"raskolbasster" wrote:
Самый деревянный способ:
В теме которою используешь на сайте в папку js кладешь файл custom.js
Там же лежит файл имя_темы.info
пишешь там строчку
scripts[] = js/custom.js
Вуаля файл скрипта подключен.
Остальные методы можно узнать здесь 4. Adding JavaScript to your theme or module.

Ну а как Drupal будет реагировать на $ в таком случае? Подключить то можно по-разному. Но вопрос теперь в том, как объяснить Drupal что $ - это на самом деле jQuery без вмешательства в сторонний файл скрипта

Аватар пользователя raskolbasster raskolbasster 26 февраля 2013 в 23:59

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.

(function ($) {
  // 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

К примеру так

(function ($) {
  $(document).ready(function(){
    $('.container').css("background","#000000");
  });
}) (jQuery);

Короче оборачивай свою конструкцию и не забывай $

Потом переходи с $(document).ready(function() на http://drupal.org/node/304258#drupal-behaviors

PS. [Lullabot] Lullabot.com - jQuery and JavaScript in Drupal