
Прежде чем я приведу код сниппета, хочу обратить внимание на одну особенность, вывод даты в чанках и чанках-шаблонах для сниппетов осуществляется по разному. В первых дата выводится уже преобразованная в удобочитаемый вид из формата метки времени Unix, так называемом timestamp. Во вторых выводится именно метка времени без преобразования.
Например, нам необходимо вывести дату публикации ресурса publishedon. В обычном чанке, который не используется в качестве шаблона для вывода результатов работы сниппета, нам потребуется дату пропустить через strtotime, в тоже время в чанке который используется как шаблон для вывода результатов работы сниппета этого не потребуется. Это необходимо для того чтобы наш сниппет, я его назвал dataRU (вы можете его назвать по своему желанию, на работе онного это никак не скажется) работал.
В частности, будет так, для обычных чанков:
{$_modx->resource.publishedon | strtotime | dateRU} //для Fenom [[*publishedon:strtotime:dateRU]] //для обычного написания
Для чанков используемых в качестве шаблонов для вывода результатов работы сниппетов:
{$_modx->resource.publishedon | dateRU} //для Fenom [[*publishedon:dateRU]] //для обычного написания
А, вот и сам код нашего сниппета:
$month_arr = array( '01' => 'Января', '02' => 'Февраля', '03' => 'Марта', '04' => 'Апреля', '05' => 'Мая', '06' => 'Июня', '07' => 'Июля', '08' => 'Августа', '09' => 'Сентября', '10' => 'Октября', '11' => 'Ноября', '12' => 'Декабря' ); $d = $input; $month = strftime("%m",$d); $year = strftime("%Y",$d); $day = strftime("%d",$d); $month = $month_arr[$month]; return "$day $month $year";
Что там такого интересного понаписано в коде том? Все просто, сначала мы создаём массив с русскими названиями месяцев. Затем переменной $d присваеваем входящие данные, а именно дату. Да, да, кто не знал в сниппетах modx есть переменная по умолчанию $input туда запихиваются входящие данные если они есть.
Далее используя PHP функцию strftime мы последовательно получаем: номер месяца, год и день; в формате который нам подходит. Функция форматирует дату, кстати в PHP версии 8.1 она уже не используется, так как устарела, альтернативой является функция data.
Затем мы получаем в массиве название нужного нам месяца и возвращаем собрав всю дату в удобочитаемый вариант. Собственно все, успеха и удачи тебе в твоих свершениях, дружище!