Люди подскажите, что здесь нужно изменить, чтоб данный регион выводился только при просмотре полной ноды (в тизере не надо):
// instory - имя вашего региона (можете задать другое имя)
// "THEMENAME" следует заменить на имя вашей темы.
function newsflash_preprocess_node(&$variables){
if(!$vars['teaser']) {
// Load region content assigned via blocks.
// Прицепить к массиву переменных ноды переменную instory
foreach (array('instory') as $region) {
$variables[$region] = theme('blocks', $region);
}
}
}
// "THEMENAME" следует заменить на имя вашей темы.
function newsflash_preprocess_node(&$variables){
if(!$vars['teaser']) {
// Load region content assigned via blocks.
// Прицепить к массиву переменных ноды переменную instory
foreach (array('instory') as $region) {
$variables[$region] = theme('blocks', $region);
}
}
}
Комментарии
if (stripos($_GET['q'],'node/')) {
echo 'мы в ноде';
}
ничего, только сайт вешает.
сорри
if (stripos($_GET['q'],'node/')===0) {
echo 'мы в ноде';
}
ну и естественно кириллицу "мы в ноде" в шаблон писать не стоит
тоже самое, может не так пишу?:
// "THEMENAME" следует заменить на имя вашей темы.
function newsflash_preprocess_node(&$variables){
if (stripos($_GET['q'],'node/')===0) {
// Load region content assigned via blocks.
// Прицепить к массиву переменных ноды переменную instory
echo foreach (array('instory') as $region) {
$variables[$region] = theme('blocks', $region);
}
}
}
echo вообще убери, это ж я к примеру написал.
спасибо вам человеческое - помогло! правда возник еще вопрос: возможно есть вариант для вывода только в случае если нода - это запись в блоге (а то и на страницах подшивки отображаются).
а вопрос такой - если нужно регион выводить по условию, то не проще-ли в page.tpl.php прописать это самое условие?
мне нужно просто чтоб под постами в блогах(только полными, только в блогах) выводились нужные блоки (типа подпишись на рсс, рекламы). в для 5ки делалось просто и много про это написано, а вот для 6ки - рабочий (описанный) только с выводом везде и для всех типов материалов. вот и пытаюсь разобраться как мне это реализовать. сам к сожалению новичек...
это уже лучше делать через модуль типа "views", или в настройках словарей выставлять - сюда можно грузить только заметки , а сюда - только страницы и т.п. Через шаблоны - не дело, иначе что будет, если у тебя 32 заметки и 22 записи в блогах вперемешку - ты отсекаешь темой 32 заметки, и у тебя остается на вывод 22 записи в блогах, получится косяк - друпал уже заготовил постраничный вывод из базы, по 10 на страницу, а в результате выйдет допустим штуки три ноды. И pager внизу.
возможно вы меня немного не поняли (или я вас): у меня все сделано так - на главной тизеры(анонсы статей блога), кликаешь , открывается полный пост, внизу его блоки (из региона который определил)(http://dliatebia.com) , но на данный момент эти блоки выводятся еще и в страницах подшивки (http://dliatebia.com/node/10 , http://dliatebia.com/node/69). т.е. задача состоит в том, чтоб определить регион для блоков, который выводился бы только в полной ноде и только для записей блога. возможно ли такое?
эээ .. пока ответ на предыдущий пост писал , а оно вон как оказалось =)))
тогда тут проще поступить так:
в настройках блока указываем вывод если PHP-код вернул TRUE
и там пишем
$q=explode('/',$_GET['q']);
if (isset($q[1])) {
$q=abs(intval($q[1]));
if ($q>0 && is_object($node=node_load($q)) && $node->type='blog')
return TRUE;
}
}
данный вариант ничего не дал - все по прежнему, но как я понимаю он выводит блоки для адресов типа node/* , а страницы подшивки это тоже node/*
опечатку в коде я допустил. писал по памяти ибо, на движке тестить некогда.
$node->type='blog' нужно исправить на $node->type=='blog'
не помогло, оставил как есть...
а может из этого кода можно что-то взять - это template.php модуля который отображает все как надо (service_links):
// $Id: template.php,v 1.3 2007/10/11 17:24:08 apsivam Exp $
/**
* file
* Example template.php for service_links.module
* Use <?php print $service_links ?> to insert links in your node.tpl.php or you page.tpl.php file.
*/
function _phptemplate_variables($hook, $vars) {
switch($hook) {
case 'node':
case 'page':
if (module_exists('service_links')) {
$vars['service_links'] = theme('links', service_links_render($vars['node'], TRUE));
}
break;
}
return $vars;
}
значит что-то не так делаете. код рабочий.
спасибо огромное!!! все заработало! да, это я не так делал - не ставил <?...?>.
спасибо, полезно
Спасибо, очень полезно.