Не работает javascript в блоках [Решено]

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

Аватар пользователя keha3912 keha3912 29 июля 2009 в 13:35

Приветствую всех!
Не могу решить проблему с отображением кода JavaScript в блоке (он просто похоже не работает). Когда пытался завести Google Adsense начал грешить на косяки со стороны Google. Однако когда попытался добавить код счетчика HotLog понял, что проблема глобальная...
Что я пытался, но это не помогло:
1. Выставлял Full HTML и PHP
2. Обновил jQuery модулем jQuery_update.
PS. Смотрел в различных браузерах - везде одно и то же: вместо рекламного блока и счетчика пустота Sad

Комментарии

Аватар пользователя keha3912 keha3912 30 июля 2009 в 7:16

glu2006 - другого варианта нет?
IrinaStasuk - не помогло
PVasili - я Вас не понял, что Вы хотели сказать
jason32 - нет, не режет, я в нескольких проверял

Аватар пользователя glu2006 glu2006 30 июля 2009 в 9:12

keha3912 wrote:
glu2006 - другого варианта нет?
PVasili - я Вас не понял, что Вы хотели сказать

1. А чем не устраивает использование функции?
2. Имелось ввиду наличие в файле page.tpl.php темы строчки


  <?php print $closure?>

перед закрывающими тегами body и html.

Аватар пользователя keha3912 keha3912 31 июля 2009 в 8:11

glu2006 - я только начинаю знакомиться с drupal, поэтому не обессудьте.
Я создал блокнотом файл и вогнал туда код от hotlog'a. Потом добавил вот это <?php drupal_add_js('/hotlog.js') ?> в page.tpl.php темы garland (она у меня используется на сайте). Результат нулевой.

PVasili - это строчка присутствует в используемой теме.

PS я раньше пытался добавить код php в блоки и он тоже не срабатывал - тогда я грешил на кривизну кода. Я теперь уже подозреваю, что где-то глобально в друпале стоит запрет на исполнение стороннего кода. Хотя где? Рассмотреть функционал drupal за два месяца изучения я смог думаю вполне....

Аватар пользователя v_20q v_20q 31 июля 2009 в 11:36

keha3912 wrote:

Я создал блокнотом файл и вогнал туда код от hotlog'a. Потом добавил вот это <?php drupal_add_js('/hotlog.js') ?> в page.tpl.php темы garland (она у меня используется на сайте). Результат нулевой.

Вызывать функцию drupal_add_js() внутри этого файла бесполезно, потому что переменная $scripts уже сформирована.

Лучше просто вставить код

  <script type="text/javascript" src="<?php print $directory?>/hotlog.js"></script>

где-нибудь до тега </head>.
А файл hotlog.js поместить не в корень сайта, а в папку темы.

И ещё, изменять тему garland не нужно. Правильно будет создать подтему на основу garland. Думаю, на сайте должна быть хорошая информация по этому вопросу.

Аватар пользователя keha3912 keha3912 31 июля 2009 в 14:10

glu2006 - больного? скрипт чтоли? вот он:

<script type="text/javascript" language="javascript">
hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=296166&im=129&r="+
escape(document.referrer)+"&pg="+escape(window.location.href);
document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N");
</script>
<script type="text/javascript" language="javascript1.1">
hotlog_js="1.1"; hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N");
</script>
<script type="text/javascript" language="javascript1.2">
hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+"x"+screen.height+"&px="+
(((navigator.appName.substring(0,3)=="Mic"))?screen.colorDepth:screen.pixelDepth);
</script>
<script type="text/javascript" language="javascript1.3">
hotlog_js="1.3";
</script>
<script type="text/javascript" language="javascript">
hotlog_r+="&js="+hotlog_js;
document.write('<a href="http://click.hotlog.ru/?296166" target="_top"><img '+
'src="http://hit20.hotlog.ru/cgi-bin/hotlog/count?'+
hotlog_r+'" border="0" width="88" height="31" alt="HotLog"><\/a>');
</script>
<noscript>
<a href="http://click.hotlog.ru/?296166" target="_top"><img
src="http://hit20.hotlog.ru/cgi-bin/hotlog/count?s=296166&amp;im=129" border="0"
width="88" height="31" alt="HotLog"></a>
</noscript>

PVasili - был сначала в корне hotlog.js, по совету v_20q перенес в тему. Вставлял я строчку в разные места - эффект нулевой Sad

v_20q - сделал как вы сказали, за исключением создания подтемы (для тестирования думаю можно и garland использовать) - результат нулевой.

PS прям инва(й)лидом себя чувствую Sad

Аватар пользователя glu2006 glu2006 31 июля 2009 в 14:25

Вот код моего блока для счетчика лив-интернет

<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='http://counter.yadro.ru/hit?t12.6;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet: показано число просмотров за 24"+
" часа, посетителей за 24 часа и за сегодня' "+
"border='0' width='88' height='31'><\/a>")
//--></script><!--/LiveInternet-->

И у меня он работает. Смотреть на http://mpro.by. Вставлен именно кодом в блок формат ввода php, drupal-5

В связи с этим у меня возник вопрос а не стоит ли у Вас на теле блока какой нибудь визуальный редактор типа тини или фск?
И еще не забывайте чистить кеш, блоки кешируются.

Аватар пользователя v_20q v_20q 31 июля 2009 в 14:52

keha3912:
У меня твой код не работает. Drupal 6. Ругается на лишний обратный слеш в этом куске в теге A.
... height='31'><\/a> ...

Убрал слеш, всё заработало.

Аватар пользователя v_20q v_20q 31 июля 2009 в 14:57

keha3912:
Чтобы немного прояснить, что же из выше сказанного важно, вот:

Функция drupal_add_js() используется для добавления на страницу чистого JS. Твой код - это смесь JS и HTML, поэтому через эту функцию его добавлять нельзя.

По этой же причине нельзя его выносить в отдельный файл с расширение .js. В таких файлах может быть только чистый javascript.

Единственный способ вставить этот код на страницу — это вставить его целиком в нужное место, т.е. в блок с форматом вывода Full HTML, как делал в самом начале.

Не работает он просто потому, что там ошибка синтаксиса. Такие вещи нужно искать в консоли ошибок браузера.

Аватар пользователя keha3912 keha3912 31 июля 2009 в 18:54

glu2006 - да, FCKeditor гадил немного Smile , отключил его на странице редактирования блока. (хотя я его в момент внесения кода отключал кнопкой Источник (Source))
v_20q - спасибо за вашу въедливость Smile она меня спасла. Именно убирание ошибки синтаксиса и выбор Full HTML привел меня к победе над счетчиком!

Однако блок Google Adsense так и не отображается. И там похоже только javascript.
Вот он:

<script type="text/javascript"><!--
google_ad_client = "pub-1949508258277338";
/* 728x90, создано 31.07.09 */
google_ad_slot = "9182511051";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

PS Поднятие вопроса про Google Adsense похоже на впихивание нового обсуждения в старое, однако, думаю, половина здесь уже сказанного имеет прямое отношение и к моей проблеме с Google Adsense, поэтому не вижу смыслы плодить темы-близнецы Smile (хотя модерам виднее)