Все для создания и продвижения сайтов

Верстка, программирование, SEO

Выборка материалов по дате в XPDO MODX

Работая с XPDO в MODX Revo иногда возникает потребность вывести материалы по конкретной дате, но здесь есть некоторые нюансы, а именно проблема возникает из-за того, что в базе данных даты хранятся в нестандартном формате.

Рассмотрим скрипт, которые выведет все материалы за конкретный день.

<?php
$data = date('2015-12-10'); // В эту переменную мы заносим нужный день
$date_from = strtotime($data." 00:00:00");
$date_to = strtotime($data." 23:59:59");

$data_y = date('Y-m-d',(strtotime('-1 days', strtotime($data))));
$data_t = date('Y-m-d',(strtotime('+1 days', strtotime($data)))); 

$where = $modx->newQuery('modResource');
$where->limit(5); 
$where->where(array(
	'publishedon:>' => $date_from,
	'publishedon:<' => $date_to,
));
$resources = $modx->getCollection('modResource',$where);

$res .= '<p>Выбран день '.$data.'</p>';

foreach ($resources as $k) {
    $res .= '<h2>'.$k->get('pagetitle').'</h2>';
    $res .= '<p><small>Дата: '.$k->get('publishedon').'</small></p>';
}

print($res);

Если вам требуется вывести материалы не раньше конкретного дня, то закомментируем следующую строку:

'publishedon:<' => $date_to,

К примеру, можно вывести все материалы, которые были опубликованы после «2015-12-10».

И аналогично, вывести даты не позднее конкретного числа, то комментируем эту строку.

'publishedon:>' => $date_from,

В переменную $data можно передавать любые даты из полей MODX, к примеру, дату публикации или TV типа даты.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.