On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Это пример чанка nl_sidebar. Использую для вывода последних новостей. Дата формата "14 June" преобразуется в дату формата "14 июня". JavaScript начал разбирать только сегодня, так что если есть ошибки или можно написать все это короче - делитесь. Проверено на популярных браузерах.

    <div style="font-size:12px; font-family:Georgia, 'Times New Roman', Times, serif;">
    
    <script language="JavaScript">
    var ditto_date = "[+date+]";
    var January = /January/gi;
    var February = /February/gi;
    var March = /March/gi;
    var April = /April/gi;
    var May = /May/gi;
    var June = /June/gi;
    var July = /July/gi;
    var August = /August/gi;
    var September = /September/gi;
    var October = /October/gi;
    var November = /November/gi;
    var December = /December/gi;
    if (ditto_date.substring(3,10)=="January") document.write(ditto_date.replace(January, "января"));
    if (ditto_date.substring(3,11)=="February") document.write(ditto_date.replace(February, "февраля"));
    if (ditto_date.substring(3,8)=="March") document.write(ditto_date.replace(March, "марта"));
    if (ditto_date.substring(3,8)=="April") document.write(ditto_date.replace(April, "апреля"));
    if (ditto_date.substring(3,6)=="May") document.write(ditto_date.replace(May, "мая"));
    if (ditto_date.substring(3,7)=="June") document.write(ditto_date.replace(June, "июня"));
    if (ditto_date.substring(3,7)=="July") document.write(ditto_date.replace(July, "июля"));
    if (ditto_date.substring(3,9)=="August") document.write(ditto_date.replace(August, "августа"));
    if (ditto_date.substring(3,12)=="September") document.write(ditto_date.replace(September, "сентября"));
    if (ditto_date.substring(3,10)=="October") document.write(ditto_date.replace(October, "октября"));
    if (ditto_date.substring(3,11)=="November") document.write(ditto_date.replace(November, "ноября"));
    if (ditto_date.substring(3,11)=="December") document.write(ditto_date.replace(December, "декабря"));
    </script>
    
    </div>
    <a href="[~[+id+]~]" title="[+title+]">[+title+]</a>
    <br/>
    <p>[+introtext+]</p>
    <br/>
    


    Вызываю:
    [[Ditto? &startID=`2` &summarize=`3` &total=`3` &commentschunk=`Comments` &tpl=`nl_sidebar` &dateFormat=`%d %B` &showarch=`0` &truncLen=`100` &truncSplit=`0`]]
    • идем в /assets/snippets/ditto/lang/english.inc.php (если прописали в сниппете russian, значит идем в russian.inc.php) и прописываем
      setlocale(LC_ALL, ’ru_RU.CP1251’);
      • shocked ну хоть JS попробовал в действии.
        laugh
        Вообще-то я предполагал, что после setlocale месяц будет выглядеть как "январь", а не "января".
        • Quote from: PoMeO at Jul 06, 2007, 08:44 AM

          идем в /assets/snippets/ditto/lang/english.inc.php (если прописали в сниппете russian, значит идем в russian.inc.php) и прописываем
          setlocale(LC_ALL, ’ru_RU.CP1251’);
          ТЕ после этой манипуляции даты отображаются нормально?
          ps пробовать лень.
          • Кстати, попробовал setlocale(LC_ALL, ’ru_RU.CP1251’);. Результата не видно.
            • Quote from: SamZ at Jul 06, 2007, 10:24 AM

              Quote from: PoMeO at Jul 06, 2007, 08:44 AM

              идем в /assets/snippets/ditto/lang/english.inc.php (если прописали в сниппете russian, значит идем в russian.inc.php) и прописываем
              setlocale(LC_ALL, ’ru_RU.CP1251’);
              ТЕ после этой манипуляции даты отображаются нормально?
              ps пробовать лень.
              зависит от настроек сервера, если у вас данный скрипт нормально все покажет
              <?php
              setlocale(LC_TIME, "ru_RU.CP1251"); 
              echo strftime('%A, %d %B %Y');
              ?>
              

              значит все нормально, опять же все зависит от сервера, может быть и так
              <?php
              setlocale(LC_TIME, "rus"); 
              echo strftime('%A, %d %B %Y');
              ?>
              

              здесь человек тоже отписывал про даты в дитто http://modxcms.com/forums/index.php/topic,6995.150.html

              http://hijacker.ru/
              справа ditto, даты выводятся как написано выше
              • Вообще нельзя пологаться на JS в таком деле, т.к. у пользователя может быть отключен JS, или же он лезет через всякую OperaMini. Да и зачем два раза конвертить дату, когда во время вставки ее можно подменить?
                Также я разочаровался давно в установки локали, т.к. работает не всегда и не везде.

                Предлагаю такое:
                в ditto.class.inc.php заменить все вызовы strftime(bla-bla-bla, bla-bla-bla), на preg_replace(array("/January/","/February/","/March/","/April/","/May/","/June/","/July/","/August/","/September/","/October/","/November/","/December/"),array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"),strftime(bla-bla-bla, bla-bla-bla))
                • Тогда уж лучше воспользоваться заменой по способу, описанному здесь http://modx.ru/blog/cleaner как более универсальному.
                    DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                    Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                    [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                  • а что и где нужно прописывать? если нужно вывод дат в таком формате
                    Январь - Янв
                    Февраль - Фев

                    т.е первые 3 буквы месяца...
                    • Открываем файл ditto.class.inc.php
                      В нем меняем содержимое функции formatDate на:
                      function formatDate($dateUnixTime, $dateFormat) {
                          global $modx;
                          $eng = array("/January/","/February/","/March/","/April/","/May/","/June/","/July/","/August/","/September/","/October/","/November/","/December/");
                          $rus = array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
                          $dt = preg_replace($eng, $rus , strftime($dateFormat, (intval($dateUnixTime) + $modx->config["server_offset_time"])));
                          return $dt;
                      }
                      

                      И затем сохраняем файл в кодировке, которая используется на сайте