регионы в теме оформления

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

Аватар пользователя вOFFка вOFFка 13 октября 2008 в 12:58

Люди подскажите, что здесь нужно изменить, чтоб данный регион выводился только при просмотре полной ноды (в тизере не надо):

// 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);
       }
    }
}

Комментарии

Аватар пользователя вOFFка вOFFка 13 октября 2008 в 16:19

тоже самое, может не так пишу?:

// instory - имя вашего региона (можете задать другое имя)
// "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);
       }
    }
}
Аватар пользователя вOFFка вOFFка 13 октября 2008 в 16:54

спасибо вам человеческое - помогло! правда возник еще вопрос: возможно есть вариант для вывода только в случае если нода - это запись в блоге (а то и на страницах подшивки отображаются).

Аватар пользователя kosilko kosilko 13 октября 2008 в 16:41

а вопрос такой - если нужно регион выводить по условию, то не проще-ли в page.tpl.php прописать это самое условие?

Аватар пользователя вOFFка вOFFка 13 октября 2008 в 16:59

мне нужно просто чтоб под постами в блогах(только полными, только в блогах) выводились нужные блоки (типа подпишись на рсс, рекламы). в для 5ки делалось просто и много про это написано, а вот для 6ки - рабочий (описанный) только с выводом везде и для всех типов материалов. вот и пытаюсь разобраться как мне это реализовать. сам к сожалению новичек...

Аватар пользователя kosilko kosilko 13 октября 2008 в 17:04

это уже лучше делать через модуль типа "views", или в настройках словарей выставлять - сюда можно грузить только заметки , а сюда - только страницы и т.п. Через шаблоны - не дело, иначе что будет, если у тебя 32 заметки и 22 записи в блогах вперемешку - ты отсекаешь темой 32 заметки, и у тебя остается на вывод 22 записи в блогах, получится косяк - друпал уже заготовил постраничный вывод из базы, по 10 на страницу, а в результате выйдет допустим штуки три ноды. И pager внизу.

Аватар пользователя вOFFка вOFFка 13 октября 2008 в 17:19

возможно вы меня немного не поняли (или я вас): у меня все сделано так - на главной тизеры(анонсы статей блога), кликаешь , открывается полный пост, внизу его блоки (из региона который определил)(http://dliatebia.com) , но на данный момент эти блоки выводятся еще и в страницах подшивки (http://dliatebia.com/node/10 , http://dliatebia.com/node/69). т.е. задача состоит в том, чтоб определить регион для блоков, который выводился бы только в полной ноде и только для записей блога. возможно ли такое?

Аватар пользователя kosilko kosilko 13 октября 2008 в 17:16

"volosia" wrote:
мне нужно просто чтоб под постами в блогах(только полными, только в блогах) выводились нужные блоки (типа подпишись на рсс, рекламы). в для 5ки делалось просто и много про это написано, а вот для 6ки - рабочий (описанный) только с выводом везде и для всех типов материалов. вот и пытаюсь разобраться как мне это реализовать. сам к сожалению новичек...

эээ .. пока ответ на предыдущий пост писал , а оно вон как оказалось =)))
тогда тут проще поступить так:
в настройках блока указываем вывод если PHP-код вернул TRUE
и там пишем

if (stripos($_GET['q'],'node/')===0) {
        $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;
                }
        }
Аватар пользователя вOFFка вOFFка 13 октября 2008 в 17:28

данный вариант ничего не дал - все по прежнему, но как я понимаю он выводит блоки для адресов типа node/* , а страницы подшивки это тоже node/*

Аватар пользователя kosilko kosilko 13 октября 2008 в 18:01

опечатку в коде я допустил. писал по памяти ибо, на движке тестить некогда.

$node->type='blog' нужно исправить на $node->type=='blog'

Аватар пользователя вOFFка вOFFка 13 октября 2008 в 23:13

а может из этого кода можно что-то взять - это template.php модуля который отображает все как надо (service_links):

<?php
// $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;
}