Drupal. Получить отфильтрованные узлы в шаблоне

в Drupal 7, как я могу получить список узлов на основе определенного фильтра в шаблоне страницы? например, страница — популярные.tpl.php

например, получить последние 4 узла с типом контента «article» и названием таксономии «news»?

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

Ценю, если кто-нибудь может помочь!

0

Решение

Шаблоны страниц содержат регионы, в частности, уже отрендеренные content область, край. Итак, я полагаю, что ваш вопрос должен быть правильно сформулирован следующим образом: «Как создать пользовательскую страницу, содержащую список узлов, без использования Views». Для этого нужно реализовать hook_menu в вашем модуле:

/**
* Implements hook_menu().
*/
function mymodule_menu() {
$items = array();

$items['popular'] = array(
'title' => 'Popular articles',
'page callback' => '_mymodule_page_callback_popular',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);

return $items;
}

/**
* Page callback for /popular page.
*/
function _mymodule_page_callback_popular() {

$news_tid = 1; // This may be also taken from the URL or page arguments.

$query = new EntityFieldQuery();

$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'article')
->propertyCondition('status', NODE_PUBLISHED)
->fieldCondition('field_taxonomy', 'tid', $news_tid) // Use your field name
->propertyOrderBy('created', 'DESC')
->range(0, 4);

$result = $query->execute();

if (isset($result['node'])) {
$node_nids = array_keys($result['node']);
$nodes = entity_load('node', $node_nids);

// Now do what you want with loaded nodes. For example, show list of nodes
// using node_view_multiple().
}
}

Взгляни на hook_menu а также Как использовать EntityFieldQuery.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]