Размещение блока после определенного нода, в определенном разделе
Прислано: lgXenos
чт, 11/03/2010 - 12:32
Доброго дня
Попросили помочь вставить банер в 2 из 5 разделов. В каждом по своему условию: после первого \ третьего блока.
Я понимаю, что тема стара, и есть ссылки:
http://doc.drupal.ru/node/40247
http://www.drupal.ru/node/39719
http://www.drupal.ru/node/38729
http://odrupal.ru/kak-vstavit-banner-blok-mezhdu-nodami-na-glavnoi-stran...
Но вот в чем фигня получается... Открыл я node.tpl.php, вставил там: echo "page=$page id=$id";
И сразу первая неприятность: в одном разделе ни одного блока не изменилось. В ином - мое echo отработало почему-то в 2,3, 5 и 6м нодах.
Сразу стало не ясно: нод.тпл.пхп разве не все ноды выводит? А куда вставить код, чтоб он отрабатывал в любом ноде?
Ибо там дальше уж просто... в переменной ID хранится порядковый номер блока по порядку. В PAGE - на какой странице находимся. Осталось узнать переменную, в которой лежит ID-раздела, в котором находимся.... Ну и все же где я могу такой блок повесить.
PS: там грят поставьте view. Это какой-то модуль? Или тип блока?
Только столкнулся с друпалом. Мало, что понимаю пока в нем. :(
- lgXenos's blog
- Для комментирования войдите или зарегистрируйтесь
Ну если совсем не чем заняться можешь создать под каздый раздел свою страничку (page-front.tpl.php, page-user.tpl.php, page-еще_какая_нибудь_страничка.tpl.php)
Так точно сделаешь то что ты задумал.
Хотя помоему все это дело можно прекрасно настроить и стандартными возможностями "Блок". Если я правельно понял условия.
Страничка отвечающая по умалчанию за все представления page.tpl.php
- Для комментирования войдите или зарегистрируйтесь
echo "page=$page id=$id";
Не знаю, откуда вы выбрали этот код... ни у меня http://www.drupal.ru/node/39719, ни у http://odrupal.ru/kak-vstavit-banner-blok-mezhdu-nodami-na-glavnoi-stran... такого кода вроде нет...
Попробуйте мой, я так вставляю Адсенс (и не только его) уже давно, и на 5ке, и на 6ке он работает.
Другое дело, разделы... Тут вопрос что вы подразумеваете под разделами? таксономию? Вьювс?
- Для комментирования войдите или зарегистрируйтесь
Страничка отвечающая по умалчанию за все представления page.tpl.php
Не то... Там у меня срабатывает:
<?php else
{
?>
<div class="sectiontitle"><?php print $title ?></div>
<div class='article_body'>
<div class="tabs"><?php print $tabs ?></div>
<?php print $help ?>
<?php// print $messages ?>
<?/* if($cur_path=="node")
{
print "test";
}
else
{*/
echo "start";
print $content;
echo "end";
echo "</div>";
}?>И в итоге у нас на странице выводится: старт, потом идут ВСЕ ноды + страничная листалка, и только потом финиш. :) Т.е. обработчик блоков где-то сработал без меня и вписал в переменную контент и ноды, и пейджер. :(
Не знаю, откуда вы выбрали этот код...
Мммм...
Дык я его сам туда добавил, для отладки. Чтоб видеть, в каких местах сайтся задействуется этот файл для обработки нода. Оказалось он как-то слишком выборочно задействуется. В новостях - каждый блок, а в пользовательском разделе - местами...
Другое дело, разделы... Тут вопрос что вы подразумеваете под разделами? таксономию? Вьювс?
Встречный вопрос что есть таксономия, что вьювс)
Под разделами я подразумеваю разделы, рубрики еще можно сказать.
Т.е. допустим на сайте есть лента\рубрика\раздел новостей, есть вопросы, есть еще какие-то другие наборы лент.
Друпал у нас 4.7, как указано в теме. Но на сайте адсенса вижу что то есть и для него...
Сейчас попробую понять как модули ставятся, и что мне надо будет сделать в итоге.
- Для комментирования войдите или зарегистрируйтесь
Вставить код ниже в node.tpl.php:
Источник: http://www.drupal.ru/node/39719
Вот почему я туда полез. Вспомнил. :)
Т.е. я по аналогии, не забивая себе голову, решил что если так вставить и будет дергаться модуль, то что мне мешает дергать PHP-скрипт?
Вот только вставил я почти в начало.
http://clip2net.com/clip/m7814/1268314199-clip-13kb.png
Но так сложилось, что этот код\нод выводится не всегда. Не каждому ноду.
Следовательно если у нас в разделе выводится 2 блока не по этому типу, то как вставить после первого - меня смущает...
И чем тут поможет адсенс? Он то по такому же принципу срабатывает.
Скрипт нод.тпл вызывался - код отработал. Не вызывался - не отработал.
Я сейчас ради интереса в самое начало файла добавил HTML код, чтоб даже если инклуд файла пошел, с любыми параметрами, он отписался.
Как итог - первые два блока у нас выведены по своему шаблону. Потом несколько с моим отладочным текстом. А дальше в разброс.
Т.е. как будто там стоят какие-то кастомные блоки, которые выводятся абсолютно вольно, независимо от нод.тпл.
- Для комментирования войдите или зарегистрируйтесь
В общем пошел я давно-известным путем, методом подбора. Открывал по очереди все tpl, вставлял в начало файла
Много было...
Зато после обновления все встало на свои места, какой шаблон там заюзался.
Друпал, повторюсь, не знаю я.
Так понимаю, что каким-то образом модератор настроил вывод в этот раздел других нодов. В смысле иного типа.
Либо при создании нода для этого раздела выбрал необычный тип ноду... что ли...
В общем не знаю универсального решения. Не нашел.
Но так методом перебора мы можем вставлять нужные условия в шаблоны.
И ответ на еще один мой вопрос, как опознать де мы находимся, ищется в arg(0)
- Для комментирования войдите или зарегистрируйтесь
Для каждого баннера через админку сделать блок в регионе "содержимое" и показывать этот блок только на нужных страницах. Если условие нужно более хитрое, то в настройках блока можно и пхп-условие написать.
- Для комментирования войдите или зарегистрируйтесь
Хотя помоему все это дело можно прекрасно настроить и стандартными возможностями "Блок". Если я правельно понял условия.
Ну и если ты решил поэксперементировать через php вывод, то
Если условие нужно более хитрое, то в настройках блока можно и пхп-условие написать.
- Для комментирования войдите или зарегистрируйтесь
.
- Для комментирования войдите или зарегистрируйтесь
А подскажите, в каких переменных, в ноде, хранится инфа о:
1. алиасе раздела (arg(0) отдает первый элемент массива $_GET, что от части верно)
2. номере текущей страницы (в page я так и недопонял, что лежит)
?
- Для комментирования войдите или зарегистрируйтесь
. глюк gnixa .
- Для комментирования войдите или зарегистрируйтесь
$_GET['q'] - системный путь текущей страницы
- Для комментирования войдите или зарегистрируйтесь
$_GET['q'] - системный путь текущей страницы
можно и REQUEST_URI, но я про переменные друпала.
- Для комментирования войдите или зарегистрируйтесь
можно и REQUEST_URI, но я про переменные друпала
Можно, вот только $_GET['q'] и есть переменная друпала. И всегда устанавливается в правильное значение.
http://api.drupal.ru/api/function/drupal_init_path/6
- Для комментирования войдите или зарегистрируйтесь
А подскажите, в каких переменных, в ноде, хранится инфа о:
1. алиасе раздела (arg(0) отдает первый элемент массива $_GET, что от части верно)
2. номере текущей страницы (в page я так и недопонял, что лежит)
1. drupal_get_path_alias('node/'.$node->nid)
2. $node->nid
- Для комментирования войдите или зарегистрируйтесь




Комментарии