Вывод тизеров нод, содержащих те же термины, что и текущая, открытая нода (модификация)

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

Аватар пользователя XDmitry XDmitry 16 августа 2010 в 12:52

Есть сниппет (автор Dalay – drupalka.ru).

<?php
if (arg(0) == 'node'  && is_numeric(arg(1)) && is_null(arg(2))) {
  
$num_nodes 10;
  
$voc_id ID_нужного_словаря;
  
$nid       = (int)arg(1);
  
$node      = new stdClass;
  
$node->vid $nid;
  
$terms taxonomy_node_get_terms_by_vocabulary($node$voc_id);
  
$status    1;
  foreach (
$terms as $term) {
    
$sql "SELECT DISTINCT n.title, n.nid
                FROM {node} n
                INNER JOIN {term_node} tn
                ON n.nid = tn.nid
                WHERE n.status = %d
                AND tn.tid = %d
                AND n.type <> '%s'
                AND n.nid <> %d
                ORDER BY n.created
                DESC"
;
    
$result db_query_range(db_rewrite_sql($sql), $status$term->tid$node->type$nid0$num_nodes);
    
$items = array();
    while (
$node db_fetch_object($result)) {
      
$items[] = l($node->title'node/'$node->nid, array('attributes' => array('title' => $node->title)));
    }
    
$output theme('item_list'$items);
  }
  return !empty(
$output) ? $output '';
}
?>

С помощью этого сниппета происходит выборка заголовков нод, содержащих те же термины, что и открытая нода. Причем словарь и термины в нем являются общими для двух разных типов нод. Открывая ноду первого типа, происходит вывод заголовков ноды второго типа, и наоборот. Проще, когда создается резюме, пользователь увидит подходящие вакансии (и наоборот).

Необходимо вывести не заголовки нод, а их тизеры ($teaser), причем все с полноценным пейджером внизу. Все это будет размещаться в блоке.

Сам тизер определяется в шаблоне этих двух нод, где структура такова:

<?php
...
<?
php if($teaser): ?>

      Код тизера...

<?php else: ?>

      Код body...
 
<?php endif; ?>
...
?>

Как модифицировать вышеуказанный код с учетом этих пожеланий? Спасибо.