Приветствую, друзья!
Используется стандартный модуль 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.
Комментарии
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg/7
->innerJoin('таблица с полем')
->condition('поле', 'значение')
она вернёт аргумент по его номеру
нет