Как показать ноды за текущую неделю?

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

Аватар пользователя andreyks andreyks 17 января 2012 в 0:56

Как показать ноды за текущую неделю? То есть все новости от понедельника 00:00 до воскресенься 20:00 за текущую неделю.

С помощью вью сделал за последние 7 дней, а как ограничится текущей неделей - не знаю. Подскажите, кто сталкивался, пожалуйста.

Вообще лучше показывать не с понедельника 00:00 а, с 20:00 прошлого воскресенья

Комментарии

Аватар пользователя andreyks andreyks 17 января 2012 в 22:28

Всем спасибо за участие. Вот результат.
Есть хук 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
function mymodule_views_query_alter($viewviews_plugin_query_default $query) {

  if (

$view->name == 'view_name' && $view->current_display == 'block_1') {

    if (

date('w') == && date('G') > 20) { // если сегодня воскресенье и сейчас больше 20:00
      
$last_week strtotime('today + 20 hours');
    } else {
      
$last_week strtotime('last Sunday + 20 hours');
    }

    

//$query->where[] = 'created > ' . $last_week; // это должно сработать в друпале 6, но не проверял
// но  $query->orderby[0] = 'node.created DESC'; // в 6-ке работало
    
$query->add_where(0'node.created'$last_week'>'); // Д7
  
}
}
?>