Drupal 7, не уверен, как правильно оформить мой вывод из данных запроса - PullRequest
3 голосов
/ 03 сентября 2011

Я использовал Views, чтобы выборочно возвращать узлы, но сейчас я хочу вернуть свои узлы и использовать термин Taxonomy в качестве заголовка группы.Я все равно не вижу, чтобы заставить Views сделать это для меня, а затем создать несколько просмотров на одной странице.

Так что я подумал, что подправлю модуль.Я написал SQL, чтобы вернуть правильные узлы, но я не могу понять, как правильно отправить их в движок тем.Я хотел бы получить несколько советов о том, как это сделать, в моей учебной книге есть примеры построения списка, как показано ниже.

foreach ($result as $row2) {
$items[]  = l($row2->title,'node/'.$row2->nid.'/edit');
}
return array('#markup' => theme('item_list',array('items' => $items)));

Теперь я хочу вернуть вложенный файл изображения моих узлов в режиме тизера, изаголовок узла, плюс (и я не хочу забегать вперед). Я также хочу добавить пару полей узла добавления, добавленных к заголовку.Должно быть легко, верно?Я вообще не могу с этим разобраться.

Я немного обошел все вокруг, используя, я уверен, что это не друпальный метод, который выглядит примерно так, проблема в том, что я могумой вывод не будет работать с модулем ColorBox, поэтому я думаю, что если я смогу получить официальные данные узла Teaser, они могут работать лучше, и я бы чувствовал себя лучше, зная, что я делаю вещи друпалийским способом:)

foreach ($result as $row2) {
$items .= '<img title="'.$row2->title.' '.$row2->fielddata.'" alt="'.$row2->title.'" src="http://localhost/theme/sites/default/files/styles/thumbnail/public/field/image/'.$row2->filename .'"></a>';
$items .= '</div></div></div></div>';                       
}
return array('#markup' => $items);

Очень ценю любое время, которое вы мне помогаете, и заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Следующий код должен помочь.Если у вас его еще нет, установите модуль devel , он предоставит вам замечательную функцию под названием dpm(), которая будет печатать содержимое массива / объекта в область сообщений.

// Get some nodes ids
$nids = db_query('SELECT nid FROM {node}')->fetchCol();

// Load up the node objects
$nodes = node_load_multiple($nids);

// This will print the node object out to the messages area so you can inspect it to find the specific fields you're looking for
dpm($nodes); 

// I guess you'll want to do something like this:
$terms = array();

foreach ($nodes as $node) {
  // Load the taxonomy term associated with this node. This will be found in a field as this is how taxonomy terms and nodes are related in D7
  $term = taxonomy_term_load($node->field_vocab_name['und'][0]['tid']);

  // Set up the array
  if (!isset($terms[$term->name])) {
    $terms[$term->name] = array();
  }

  // Create some markup for this node
  $markup = '<h3>' . l($node->title . ' ' . $node->field_other_field['und'][0]['value'], "node/$node->nid") . '</h3>';

  // Add an image
  $image = theme('image', array('path' => $node->field_image['und'][0]['uri'], 'alt' => $node->title));
  $markup.= $image;

  // Add the markup for this node to this taxonomy group's list
  $terms[$term->name][] = $markup;
}

// Make up the final page markup
$output = '';
foreach ($terms as $term_name => $node_list) {
  $output .= '<h2>' . check_plain($term_name) . '</h2>';
  $output .= theme('item_list', array('items' => $node_list));
}

return $output;

Надеюсь, что помогает

0 голосов
/ 03 сентября 2011

Вы можете получить представления для группировки возвращаемых узлов по термину таксономии.Предполагая, что вы используете тип представления field, просто добавьте поле таксономии, а затем там, где написано Format:Unformatted list | Settings, нажмите «Настройки» справа и выберите поле таксономии в качестве поля группировки.

Примечание:если вы не используете тип представления field, или если вы не используете unformatted list, инструкции будут отличаться от приведенного выше.

...