We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10700
    • 104 Posts
    Добрый день. Подскажите пожалуйста как в новости вывести дату такого вида
    26 марта 2008 года
    Какой dateformat поставить в вызове ditto?
      • 785
      • 2,113 Posts
      %d %B %Y года
      Но при этом должна быть установлена правильная локаль.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 10700
        • 104 Posts
        а как установить правильную локаль?
          • 785
          • 2,113 Posts
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 18044
            • 10 Posts
            Сам пользуюсь следующе функцией, поскольку PHP не проставляет окончания для месяцев...
            // функция перевода даты в текст
            if (!function_exists("date2text")) {
            	function date2text($page_createdon) {
            
            	// заносим в массив названия месяцев
            	$month[1] = "январ";
            	$month[2] = "феврал";
            	$month[3] = "март";
            	$month[4] = "апрел";
            	$month[5] = "ма";
            	$month[6] = "июн";
            	$month[7] = "июл";
            	$month[8] = "август";
            	$month[9] = "сентябр";
            	$month[10] = "октябр";
            	$month[11] = "ноябр";
            	$month[12] = "декабр";
            
            	// номер месяца в году
            	$mnum = date("n", $page_createdon);
            	// число
            	$daym = date("j", $page_createdon);
            	// год
            	$year = date("Y", $page_createdon);
            
            	// текстовое значение месяца (также из массива)
            	$monthm = $month[$mnum];
            
            	//если третий или восьмой месяц...
            	if ($mnum==3||$mnum==8)
            		{
            		// ... то добавляем окончание «а»
            		$k="а";
            		}
            	else
            		{
            		// ... добавляем окончание «я»
            		$k="я";
            		}
            
            	unset($month);
            	return "$daym $monthm$k $year";
            	}
            }
            
            // преобразуем дату в текст
            return date2text($unixtime);
            

            Здесь переменная $unixtime представляет собой юникс-время (т.е. кол-во секунд с начала эпохи).
              Допустим так, сюда туда,
              Будет так ни так, ни сяк.
              Ну не так, чтоб уж туды,
              Запроси сюды.
              Как бы так, чтобы не сяк,
              Эдак, водак, мяк и шмяк,
              Залепить сюда вот-так,
              Получается - Косяк.
              • 785
              • 2,113 Posts
              Quote from: makis at Jul 28, 2008, 09:52 AM

              поскольку PHP не проставляет окончания для месяцев...
              PHP ничего не проставляет, конкретное название зависит от локали. Если окончания не добавляются, значит на хостинге используется такая локаль (у меня, например, все нормально добавляется).
              Кстати, в программе вычисления делаются через ... – сначала пишется «январ» а потом добавляется «я», хотя проще сразу было написать «января».
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 74
                • 74 Posts
                А как быть, когда даты вида "5 июля 2008" в новостях нужно выводить для нескольких языковых веток ?
                Не проблема написать маленький сниппет, только как его подружить с Ditto?
                Что-нибудь посоветуйте.

                  • 785
                  • 2,113 Posts
                  Quote from: 2frags at Jun 23, 2009, 02:03 AM

                  Не проблема написать маленький сниппет, только как его подружить с Ditto?
                  В шаблоне Ditto вызывать сниппет и передавать [+date+] в качестве параметра. Есть некоторые тонкости, с первого раза может не получиться, но ничего сверхсложного там нет.
                  Более экзотический способ – написать плагин, который меняет написание дат в зависимости от языка страницы.

                  Вообще-то наиболее правильным, как мне кажется, было бы добавить команды setlocale для каждого языка в языковые файлы Ditto, и при выборе нужного языка будет формироваться дата на этом языке.
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 74
                    • 74 Posts
                    AKots, спасибо!
                    Вариант с локалями мы отметаем как слишком простой - мы не ищем легких путей grin
                    Тем более, что в моем случае локаль выводит даты в именительном падеже.
                    И как его превратить в родительный - непонятно.

                    Решил вызовом своего сниппета с параметром &string=`[+date+]`
                    Действительно ничего сложного

                    Сниппет:
                    $string = isset ($string ) ? $string : 0;
                    $lang = isset ($lang) ? $lang: "ua";
                    $patterns = array("/Январь/","/Февраль/","/Март/","/Апрель/","/Май/","/Июнь/","/июль/","/Август/","/Сентябрь/","/Октябрь/","/Ноябрь/","/Декабрь/");
                    switch ($lang) {
                       case "ua":
                    $replacements = array("січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня");
                    echo preg_replace($patterns, $replacements, $string);
                         break;
                       case "ru":
                    $replacements = array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
                    echo preg_replace($patterns, $replacements, $string);
                         break;
                    }
                    


                    А с плагином, наверное, было-бы удобней, но знаний не хватает )
                      • 21610
                      • 360 Posts
                      @2frags а как работает вся эта конструкция вместе?
                      Опиши по подробнее...
                        Разработка сайтов на MODx