Как показать ноды за текущую неделю? То есть все новости от понедельника 00:00 до воскресенься 20:00 за текущую неделю.
С помощью вью сделал за последние 7 дней, а как ограничится текущей неделей - не знаю. Подскажите, кто сталкивался, пожалуйста.
Вообще лучше показывать не с понедельника 00:00 а, с 20:00 прошлого воскресенья
Комментарии
Всем спасибо за участие. Вот результат.
Есть хук mymodule_views_query_alter($view, views_plugin_query_default $query)
var_dump($query) примерно такой
<?php
// array(1) {
// [0] => array(3) {
// ["conditions"] => array(3) {
// [0] => array(3) {
// ["field"] => string(11) "node.status"
// ["value"] => int(1)
// ["operator"] => string(1) "="
// }
// [1] => array(3) {
// ["field"] => string(9) "node.type"
// ["value"] => array(1) {
// [0] => string(5) "video"
// }
// ["operator"] => string(2) "in"
// }
// [2] => array(3) {
// ["field"] => string(40) "node.created > ***CURRENT_TIME***-604800"
// ["value"] => array(0) {}
// ["operator"] => string(7) "formula"
// }
// }
// ["args"] => array(0) {}
// ["type"] => string(3) "AND"
// }
// }
?>
Машинное имя вью (view_name) и блока (block_1) берем из строки адреса, когда редактируем блок
<?php
//$query->where[] = 'created > ' . $last_week; // это должно сработать в друпале 6, но не проверял
function mymodule_views_query_alter($view, views_plugin_query_default $query) {
if (
$view->name == 'view_name' && $view->current_display == 'block_1') {if (
date('w') == 0 && date('G') > 20) { // если сегодня воскресенье и сейчас больше 20:00$last_week = strtotime('today + 20 hours');
} else {
$last_week = strtotime('last Sunday + 20 hours');
}
// но $query->orderby[0] = 'node.created DESC'; // в 6-ке работало
$query->add_where(0, 'node.created', $last_week, '>'); // Д7
}
}
?>