Размещение блока после определенного нода, в определенном разделе

Прислано: 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. Это какой-то модуль? Или тип блока?
Только столкнулся с друпалом. Мало, что понимаю пока в нем. :(

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано XyuH91wka в чт, 11/03/2010 - 12:50.

Ну если совсем не чем заняться можешь создать под каздый раздел свою страничку (page-front.tpl.php, page-user.tpl.php, page-еще_какая_нибудь_страничка.tpl.php)
Так точно сделаешь то что ты задумал.

Хотя помоему все это дело можно прекрасно настроить и стандартными возможностями "Блок". Если я правельно понял условия.

Страничка отвечающая по умалчанию за все представления page.tpl.php


Опубликовано Geldora в чт, 11/03/2010 - 13:05.

"lgXenos" написал(а):

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ке он работает.

Другое дело, разделы... Тут вопрос что вы подразумеваете под разделами? таксономию? Вьювс?


Опубликовано lgXenos в чт, 11/03/2010 - 13:22.

"XyuH91wka" написал(а):

Страничка отвечающая по умалчанию за все представления 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>";            
        }
?>

И в итоге у нас на странице выводится: старт, потом идут ВСЕ ноды + страничная листалка, и только потом финиш. :) Т.е. обработчик блоков где-то сработал без меня и вписал в переменную контент и ноды, и пейджер. :(

"Geldora" написал(а):

Не знаю, откуда вы выбрали этот код...

Мммм...
Дык я его сам туда добавил, для отладки. Чтоб видеть, в каких местах сайтся задействуется этот файл для обработки нода. Оказалось он как-то слишком выборочно задействуется. В новостях - каждый блок, а в пользовательском разделе - местами...

"Geldora" написал(а):

Другое дело, разделы... Тут вопрос что вы подразумеваете под разделами? таксономию? Вьювс?

Встречный вопрос что есть таксономия, что вьювс)
Под разделами я подразумеваю разделы, рубрики еще можно сказать.
Т.е. допустим на сайте есть лента\рубрика\раздел новостей, есть вопросы, есть еще какие-то другие наборы лент.
Друпал у нас 4.7, как указано в теме. Но на сайте адсенса вижу что то есть и для него...
Сейчас попробую понять как модули ставятся, и что мне надо будет сделать в итоге.


Опубликовано lgXenos в чт, 11/03/2010 - 13:36.

"Geldora" написал(а):

Вставить код ниже в node.tpl.php:

Источник: http://www.drupal.ru/node/39719

Вот почему я туда полез. Вспомнил. :)
Т.е. я по аналогии, не забивая себе голову, решил что если так вставить и будет дергаться модуль, то что мне мешает дергать PHP-скрипт?
Вот только вставил я почти в начало.
http://clip2net.com/clip/m7814/1268314199-clip-13kb.png
Но так сложилось, что этот код\нод выводится не всегда. Не каждому ноду.
Следовательно если у нас в разделе выводится 2 блока не по этому типу, то как вставить после первого - меня смущает...
И чем тут поможет адсенс? Он то по такому же принципу срабатывает.
Скрипт нод.тпл вызывался - код отработал. Не вызывался - не отработал.

Я сейчас ради интереса в самое начало файла добавил HTML код, чтоб даже если инклуд файла пошел, с любыми параметрами, он отписался.
Как итог - первые два блока у нас выведены по своему шаблону. Потом несколько с моим отладочным текстом. А дальше в разброс.
Т.е. как будто там стоят какие-то кастомные блоки, которые выводятся абсолютно вольно, независимо от нод.тпл.


Опубликовано lgXenos в чт, 11/03/2010 - 14:08.

В общем пошел я давно-известным путем, методом подбора. Открывал по очереди все tpl, вставлял в начало файла
Много было...
Зато после обновления все встало на свои места, какой шаблон там заюзался.

Друпал, повторюсь, не знаю я.
Так понимаю, что каким-то образом модератор настроил вывод в этот раздел других нодов. В смысле иного типа.
Либо при создании нода для этого раздела выбрал необычный тип ноду... что ли...
В общем не знаю универсального решения. Не нашел.
Но так методом перебора мы можем вставлять нужные условия в шаблоны.

И ответ на еще один мой вопрос, как опознать де мы находимся, ищется в arg(0)


Опубликовано edhel в чт, 11/03/2010 - 14:48.

Для каждого баннера через админку сделать блок в регионе "содержимое" и показывать этот блок только на нужных страницах. Если условие нужно более хитрое, то в настройках блока можно и пхп-условие написать.


Опубликовано XyuH91wka в чт, 11/03/2010 - 17:55.

"XyuH91wka" написал(а):

Хотя помоему все это дело можно прекрасно настроить и стандартными возможностями "Блок". Если я правельно понял условия.

Ну и если ты решил поэксперементировать через php вывод, то

"edhel" написал(а):

Если условие нужно более хитрое, то в настройках блока можно и пхп-условие написать.


Опубликовано XyuH91wka в чт, 11/03/2010 - 21:04.

.


Опубликовано lgXenos в пт, 12/03/2010 - 08:00.

А подскажите, в каких переменных, в ноде, хранится инфа о:

1. алиасе раздела (arg(0) отдает первый элемент массива $_GET, что от части верно)

2. номере текущей страницы (в page я так и недопонял, что лежит)

?


Опубликовано lgXenos в пт, 12/03/2010 - 08:15.

. глюк gnixa .


Опубликовано riyuzakki в пт, 12/03/2010 - 08:16.

$_GET['q'] - системный путь текущей страницы


Опубликовано lgXenos в пт, 12/03/2010 - 08:41.

"riyuzakki" написал(а):

$_GET['q'] - системный путь текущей страницы

можно и REQUEST_URI, но я про переменные друпала.


Опубликовано riyuzakki в пт, 12/03/2010 - 08:55.

"lgXenos" написал(а):

можно и REQUEST_URI, но я про переменные друпала

Можно, вот только $_GET['q'] и есть переменная друпала. И всегда устанавливается в правильное значение.
 http://api.drupal.ru/api/function/drupal_init_path/6


Опубликовано Dalay в пт, 12/03/2010 - 08:58.

"lgXenos" написал(а):

А подскажите, в каких переменных, в ноде, хранится инфа о:

1. алиасе раздела (arg(0) отдает первый элемент массива $_GET, что от части верно)

2. номере текущей страницы (в page я так и недопонял, что лежит)

1. drupal_get_path_alias('node/'.$node->nid)

2. $node->nid


Новое на сайте