Как я могу отображать только ресурсы определенного года с помощью getResources (Modx)?

Я хочу отображать только ресурсы, опубликованные в 2015 году.

Я старался:

&where=`{"publishedon:":2015}`

Но это не работает. Кто-нибудь может мне помочь?

1 ответ

Решение

Опубликованный сохраняется как Unix-время в базе данных. Таким образом, вы должны преобразовать свою дату (2015) во время Unix и проверить диапазон дат с этим.

Создайте фрагмент с именем inyear со следующим кодом:

<?php
$year = $modx->getOption('year', $scriptProperties, '');
$where = $modx->getOption('where', $scriptProperties, false);
$where = is_array($where) ? $where : json_decode($where, true);
$where = ($where) ? $where : array();

if ($year) {
    $where[] = array(
        'publishedon:>=' => strtotime('1-1-'.$year),
        'publishedon:<' => strtotime('1-1-'.($year+1)),
    );
}
return json_encode($where);

После этого вы можете вызвать getRessources с

&where=`[[inyear? &year=`2015`]]`

Вы могли бы даже добавить дополнительное предложение where со свойством &where фрагмента inyear.

&where=`[[inyear? &year=`2015` &where=`whatever_else_where`]]`
Другие вопросы по тегам