Конечно существует, у ресурса есть поля, содержащие дату создания и дату последнего сохранения: publishedon и editedon. Соответственно в getresources в параметрах where можно использовать эти поля, как и любые другие. Надо принимать во внимание, что в базе они хранятся, насколько я помню, в виде timestamp. Соответственно если вам нужно выводить ресурсы за последнюю неделю, то конструкция будет примерно такая
where=`{"editedon:>":"[[calcMyDate]]"}`
, где сниппет calcMyDate выдает нужную дату (текущая минус неделя). Вообще я бы для такой задачи использовал свой сниппет, а не getResources и в нем просто сделал необходимый запрос.
Привет всем!
Есть ли, возможность при помощи «getResources» вывести ресурсы за неделю, или скажем за месяц? Может быть существует возможность сравнивать даты в параметре «where»? Не могу никак разобраться, и найти решение пока не удается :)
Необходимо это для реализации рассылки новостей, через компонент «DitsNews».
В принципе, в тех же сниппетах, хотя и можно делать print/echo, все равно правильно именно выполнять return. Там если сразу print делать, конечно MODX перехватывает обфлэшем, но я решил этого не делать, чтобы не утяжелять, и отладку не усложнять.
Добрый день!
Документации еще нет. modxSmarty примеры есть на самой страничке пакета.
По поводу MODX-тегов в phpTemplates. Здесь никаких ограничений как бы и нет. Есть только одно условие — статический php-шаблон обязательно должен выполнять возврат конечного результата. То есть нельзя использовать print, echo и т.п., а так же писать вольный HTML. Это связано с тем, что шаблон должен отдать этот код дальше MODX-парсеру.
Первые версии пакета позволяли использовать произвольный код, но с этим возникло много подводных камней, включая тонкости с кешированием, по этому сейчас все только через return $результат. Но вы свободно можете возвращать конечный код вперемешку с MODX-тегами, к примеру так:
То есть в данном случае даже не используется modxSmarty. Вы просто выполняете произвольный php-код и возвращаете результат.
Так же вы совершенно легко можете MODX-теги использовать в Smarty-шаблонах, но есть писать [[snippet]] и т.п. Но в данном случае надо учитывать, что этот тег уже будет обрабатываться самим MODX-парсером, из-за чего вы проигрываете в скорости. Так что в Smarty-шаблонах можно непосредственно вызывать метод {snippet name=«snippet_name» params=""}. В итоге в конечный код попадет уже результат выполнения сниппета.
Есть еще один очень важный момент с phpTemplates: сейчас по умолчанию все MODX-шаблоны кешируемые. То есть если страница уже выполнялась (на нее заходили), то при повторном заходе на нее php-шаблон не вызывается. Весь код страницы стандартно берется из кеша, и повторно выполняться будут только некешируемые MODX-теги (вот их как раз и имеет смысл использовать в Smarty-шаблонах там, где элемент должен выполняться при каждом заходе на страницу). Если же вам надо, чтобы при каждом заходе на страницу выполнялся php-шаблон, то в MODX-шаблоне создайте логическую переменную-параметр phptemplates.non-cached и установите ей значение 1. В таком случае шаблон будет отрабатываться при каждом заходе на страницу. Но здесь надо еще учитывать кеширование Smarty. В настройках modxSmarty есть параметр modxSmarty.caching. Все это выглядит довольно запутанно, но на самом деле имеет смысл, и позволяет кеширование настроить очень гибко под различные задачи.
Доброго дня! Где почитать документацию по phpTemplates и modxSmarty?
В установленном мной phpTemplates 1.5.0-rc (template создан статичный, расширение шаблона php) код типа <?php $output =$modx->resource->get('content'); return $output; ?> работает, а стандартные тэги MODx нет.