Добрый день!
Drupal 7.
Пишу свой хук. Необходимо программно список нод сортировать по созданному полю field_journal_outgoing_date ( тип дата) и выбрать первую запись, прочитать значение title и нарастить номер на 1.
Вот фрагмент моего рабочего кода, но в нем сортировка по дате создания, а нужно по полю field_journal_outgoing_date
<?php
$query = "SELECT title FROM {node} n ".
"WHERE n.type = :type ".
"ORDER BY n.created DESC limit 1";
$content_type = 'journal_outgoing'; // тип контента..........
$count_node = db_query($query, array(':type' => $content_type))->fetch();
// из номера выбираем только числа
preg_match_all("/\d+/", $count_node->title, $matches);.....
// к первому найденному числу в строке добавляем 1
$next_num = $matches[0][0] + 1;
$doc_number = $next_num;
?>
Подскажите, пожалуйста, как реализовать задуманное?
Спасибо.
Комментарии
Такие запросы уже давно не в моде.
Сейчас модно EntityFieldQuery.
https://www.drupal.org/docs/7/creating-custom-modules/howtos/how-to-use-...
Спасибо за помощь. Переписал код. Работает так как нужно.
<?php$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->propertyCondition('status', NODE_PUBLISHED)
->propertyCondition('type','journal_outgoing')
->fieldOrderBy('field_journal_outgoing_date','value','DESC')
->propertyOrderBy('created', 'DESC')
->range(0, 1);
$result = $query->execute();
if (isset($result['node'])) {
$nodes = node_load_multiple(array_keys($result['node']));
foreach ($nodes as $node) {
// из номера выбираем только числа
preg_match_all("/\d+/", $node->title, $matches);
// к первому найденному числу в строке добавляем 1
$next_num = $matches[0][0] + 1;
$doc_number = $next_num;
}?>