We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31807
    • 3 Posts
    Здравствуйте. У меня возник вопрос насчет архивов, надеюсь мне помогут smiley
    Пытаюсь создать архив на сайте с помощью Ditto и Reflect.
    Проблема такая.. нашел на форуме как сделать так чтобы переходить по ссылке месяца в архиве, но появилась проблема, что после того как заработали ссылки на года и месяцы перестали работать [+previous+] [+pages+] [+next+].
    Текст у меня такой :

    [!Ditto? &id=`myDittoCall` &tpl=`ditto_news` &sortBy=`createdon` &summarize=`2` &dateFormat=`%d.%m.%Y` &paginate=`1` &startID=`10` &extenders=`dateFilter`!]
    <div>
    [+previous+] [+pages+] [+next+]
    </div>
    [[Reflect? &id=`myDittoCall` &getDocuments=`1` &showItems=`0` &targetID=`10` &dittoSnippetParameters=`startID:10` &getDocuments=`1`]]

    я понимаю что архив не работает из за &paginate=`1`, но если этого параметра не будет то не будет работать [+previous+] [+pages+] [+next+].
    Подскажите пожалуйста как быть smiley, чтобы и архив работал корректно и была возможность ходить по ссылкам страниц.
      • 897
      • 1,620 Posts
      используйте разные вызовы дитто для каждого из случаев. смотрите параметр &id
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 31807
        • 3 Posts
        Вы не могли бы по подробнее объяснить как так сделать? Просто не очень понятно как заставить оба Ditto работать правильно..
        Получается у меня один Ditto будет просто отображать новости(в моем случае) с [page], а второй Ditto будет хорошо работать с Reflect, но как эти два Ditto связать вместе. Просто при выборе например ссылки месяца, первый Ditto останется без изменений.. у него будет такое же количество новостей как и было раньше, хотя должны быть только те новости которые опубликованы в данном месяце.
        Дело в том, что мне надо чтобы при нажатии на ссылку месяца на странице появились новости, и они должны быть ограниченны десятью штуками на странице..
        Надеюсь вы поймете мое объяснение smiley Тяжело как-то в этом случае сформулировать мысль ))
          • 19164
          • 1,215 Posts
          Вы посмотрите сначала ссылку, которую дал вам Алексей. Добавление к каждому отдельному вызову дитто параметра id позволит их идентифицировать отдельно друг от друга и сниппету Reflect обращаться именно к нужному ему дитто, а не к какому-то другому, по этому идентификатору.
            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]
            • 31807
            • 3 Posts
            Спасибо всем..
            Нашел решение правда без вызова двух дитто. Опишу все проблемы с которым столкнулся при создании архива Ditto + Reflect. Надеюсь будет полезно.
            1. Руссификация дат в архиве.
            При использовании первый раз сниппета Reflect с Ditto столкнулся с проблемой, даты отображались на английском. т.е. 12-Jan-2007 а надо было 12-Янв-2007. Решил проблему следующим образом. В файле ditto.class.inc.php в функции formatDate использую функцию setlocale(LC_TIME, "Russian_Russia.1251") (у меня локаль оказалась Russian_Russia.1251, могут быть ru_Ru.1251, ru_Ru.UTF8). Теперь даты стали отображаться в кодировке win-1251, но кодировка моего сайта UTF-8 и даты все равно отображались кракозябрами. К сожалению локали типа Russian_Russia.UTF8 нету и я использовал фунцию перевода из win-1251 в Utf8 функцию iconv("windows-1251","UTF-8",$dt); Теперь в функции появились такие строки:
            setlocale(LC_TIME, "Russian_Russia.1251");
            $dt = strftime($dateFormat, (intval($dateUnixTime) + $modx->config["server_offset_time"]));
            $dt = iconv("windows-1251","UTF-8",$dt);

            2. Корректная работа архива.
            По началу когда только сделал архвив, ссылки на месяцы и годы работали некорректо( это из за моего не знания smiley). Чтобы все заработало надо было в вызов Ditto добавить &id=`#` &paginate=`1` &extenders=`dateFilter` и в вызов Reflect &id=`#` &getDocuments=`1`. Id в обоих вызовах должны быть одинаковые.
            [!Ditto? &id=`main` &startID=`10` &tpl=`ditto_news` &summarize=`5` &paginate=`1` &extenders=`dateFilter` !]
            [[Reflect? &id=`main` &getDocuments=`1`]]

            3.Корректная работа ссылок на страницы([+previous+][+pages+][+next+]) и архива.
            Было необходимо чтобы при выборе месяца в архиве менялся список новостей(в моем случае) и оставалась возможность перехода по ссылкам страниц([+previous+][+pages+][+next+]), т.к. при указании в Ditto &paginate=`1`и &id=`#` страницы не показываются, потому что не понимают к какому Ditto [+previous+][+pages+][+next+] относятся. Решение проблемы оказалось очень простым. Когда у Ditto указан id то к страницам можно обратиться следующим образом [+main_previous+] [+main_pages+] [+main_next+] где &id=`main`.

            конечный код:
            [!Ditto? &id=`main` &startID=`10` &tpl=`ditto_news` &summarize=`2` &paginate=`1` &extenders=`dateFilter` !]
            <div>[+main_previous+] [+main_pages+] [+main_next+]</div>
            [[Reflect? &id=`main` &getDocuments=`1`]]

            Оказалось все просто wink
            Удачи всем с ModX
              • 33303
              • 31 Posts
              Ох, спасибо!
                • 1978
                • 131 Posts
                я воспользовался плагином

                Date Cleaner

                $dateEn = array("January","February","March","April","May","June","July","August","September","October","November","December");
                $dateRu = array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
                $modx->documentOutput = str_replace( $dateEn, $dateRu, &$modx->documentOutput);


                триггер OnWebPagePrerender
                  Как русифировать Modx 0.9.6.1(QuickEdit, TinyMCE)
                  QuickEdit под win-1251 без mb_-функций