Переобпределить вывод последних записей в блоге

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

Аватар пользователя vic vic 11 июня 2011 в 8:57

Приветствую, друзья!

Используется стандартный модуль blog, он формирует страницу последних записей в блоге (/blog).
Я добавил типу материала "Запись в блоге" свое поле "Личный блог".
И теперь мне надо на странице последних записей в блоге выводить все кроме личных блогов, т.е. надо добавить условие в запрос.
Можно конечно написать свой вьюс и "убить" стандартный. НО хочется именно переопределить запрос стандартного вывода.

Вот функция, которая выводит последние записи в блоге

<?php
/**
 * Menu callback; displays a Drupal page containing recent blog entries of all users.
 */
function blog_page_last() {
  global 
$user;
  
$build = array();

  

$query db_select('node''n')->extend('PagerDefault');
  
$nids $query
    
->fields('n', array('nid''sticky''created'))
    ->
condition('type''blog')
    ->
condition('status'1)
    ->
orderBy('sticky''DESC')
    ->
orderBy('created''DESC')
    ->
limit(variable_get('default_nodes_main'10))
    ->
addTag('node_access')
    ->
execute()
    ->
fetchCol();

  if (!empty(

$nids)) {
    
$nodes node_load_multiple($nids);
    
$build += node_view_multiple($nodes);
    
$build['pager'] = array(
      
'#theme' => 'pager',
      
'#weight' => 5,
    );
  }
  else {
    
drupal_set_message(t('No blog entries have been created.'));
  }
  
drupal_add_feed('blog/feed't('RSS - blogs'));

  return 

$build;
}
?>

Для переопределения запроса можно использовать функцию http://api.drupal.org/api/drupal/modules--system--system.api.php/functio...
Она может переопределить запрос, помеченный определенным тегом. В нашем случае запрос помечен только тегом "node_access", им помечаются, как я понял, все запросы к нодам (чтоб другие модули могли добавлять проверку прав доступа пользователя). Т.е. таким образом я переопределю много других запросов, а мне нужен только запрос на получение последних записей в блоге.
Итого, первый вопрос - как зацепиться именно за нужный запрос?
И второй вопрос - как добавить условие на добавленное поле? Ведь условия по полям можно осуществлять только для запросов, сконструированных через EntityFieldQuery.

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 11 июня 2011 в 12:25

"vic" wrote:
а мне нужен только запрос на получение последних записей в блоге

http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg/7

"vic" wrote:
И второй вопрос - как добавить условие на добавленное поле?

->innerJoin('таблица с полем')
->condition('поле', 'значение')

Аватар пользователя vic vic 11 июня 2011 в 13:43

"xxandeadxx" wrote:
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg/7[...
Интересно, не знал про такую функцию.
А она мне вернет объект $query? Какой $index при этом использовать?

"xxandeadxx" wrote:

->innerJoin('таблица с полем')
->condition('поле', 'значение')

A fieldCondition из EntityFieldQuery тут никак не применить?

Аватар пользователя xxandeadxx xxandeadxx 11 июня 2011 в 15:39

"vic" wrote:
А она мне вернет объект $query?

она вернёт аргумент по его номеру

"vic" wrote:
A fieldCondition из EntityFieldQuery тут никак не применить?

нет