pdoresources random limit

Привет.
Не могу сообразить, как сделать следующею выборку. Объясню наглядно
Есть раздел «Новости», в ней 3000 материалов.
Нужно выбрать из 10 последних добавленных новостей одну случайную/

Если я делаю так, то компонент может выбрать любой из 3000 ресурсов материал. А нужно только из 10 последних.
[[!pdoResources? 
	        &limit=`1` 
	        &sortby=`RAND()` 
	        &includeContent=`1` 
	        &parents=`[[*id]]` 
]]
Павел
28 сентября 2015, 12:05
modx.pro
1
4 775
0

Комментарии: 6

Василий Наумкин
28 сентября 2015, 15:21
+1
Должно работать вот так:
[[!pdoResources? 
	&parents=`0` 
	&resources=`[[pdoResources?limit=`10`&returnIds=`1`]]`
	&limit=`1` 
	&sortby=`RAND()` 
	&includeContent=`1` 
]]
    Павел
    28 сентября 2015, 15:32
    0
    Спасибо, а если я хочу исключить из выборки текущий материал (в котором нахожусь), как это можно сделать?
    [[!pdoResources? 
    	&parents=`0` 
    	&resources=`-[[*id]],[[pdoResources?limit=`10`&returnIds=`1`]]`
    	&limit=`1` 
    	&sortby=`RAND()` 
    	&includeContent=`1` 
    ]]
      Павел
      28 сентября 2015, 15:42
      +1
      А всё, спасибо, сообразил

      [[!pdoResources? 
      	&parents=`0` 
      	&resources=`[[pdoResources? &resources=`-[[*id]]` limit=`10`&returnIds=`1`]]`
      	&limit=`1` 
      	&sortby=`RAND()` 
      	&includeContent=`1` 
      ]]
      Антон Владимирович
      04 января 2017, 13:04
      0
      Скажите пожалуйста, а такой вызов с параметром &sortby=`RAND()` — будет выдавать рандом только если не кэшировать вызов сниппета? Как решить вопрос с кешированием в таком случае?
        Дмитрий Иванов
        04 января 2017, 18:36
        0
        А как вы хотите получить из базы другие элементы, если результат выводится из кэша? Для выборки новых элементов каждый раз, сниппет тоже должен отрабатывать каждый раз, а для этого его нужно вызывать некэшированным.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6