We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 12736
    • 259 Posts
    Здравствуйте всем.
    Столкнулся с совершенно не понятной для себя проблемой и не могу понять куда копать. Ситуация следующая:
    На сайте с фронтэнда для вебюзеров организовано добавление новых документов, через использование docAPI http://modxcms.com/forums/index.php/topic,5823.0.html. C использованием docAPI проблем нет - все прекрасно работает и параметры и tv параметры попадают в таблицы и создается новый документ, который отбражается в дереве документов в админке. Далее чтобы юзер мог посмотреть список документов, которые он добавил есть вызов ditto с фильтрацией по id юзера:

    [[Ditto? &startID=`1` &depth=`3` &summarize=`10` &noResults=`dittoNot` &tpl=`dittoList` &paginateAlwaysShowLinks=`1` &paginate=`1` &display=`all` &filter=`createdby,[[getUid]],1` &id=`1` ]]

    Вызов ditto работает - отображает список документов которые добавил пользователь, но сам по себе он список не обновляет. То есть если пользователь добавил с фронтенда документ, а потом пошел на страницу с данным вызовом, то список будет содержать все документы которые добавил пользователь, кроме последнего документа.
    Пробывал все сочетания: кэшируемый/некэшируемый вызов и кэшируемая/некэшируемая страница - ситуация не меняется.
    Делал так чтоб при добавлении нового документа принудительно чистился кэш - тоже не помогло.
    Сделал так чтоб при добавлении с фронтенда поля в таблице modx_site_content заполнялись в точности так как если бы этот документ добавил админ с бэкенда - не помогло.
    Понятно, что испробывал все возможные варианты перезагрузки страницы со списком (Ctrl+R, Ctrl+F5) - дело не в браузере.
    Но самое странное, что для того чтобы список документов обновился достаточно зайти в админку и пересохранить ЛЮБОЙ (хоть шаблон, хоть сниппет, хоть чанк, хоть любую страницу) документ - и все - после этого список на сайте обновляется. Понятно, что это меня совсем не устраивает, документы которые добавил пользователь должен без всякой модерации сразу попадать на сайт. Что делать уже не знаю. Если кто-то сталкивался с чем-то подобным очень прошу поделиться опытом. Спасибо.

    З.Ы. Понятно что документы добавляются сразу опубликованными.
      • 785
      • 2,113 Posts
      Quote from: ikarushka at Oct 21, 2008, 05:03 AM

      Делал так чтоб при добавлении нового документа принудительно чистился кэш - тоже не помогло.
      А как - может как-то неправильно? Симптомы просто очень похожи на то, что документ их кэша берется. Можно в шаблоне написать [^s^], чтобы узнать откуда взят документ.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 12736
        • 259 Posts
        Quote from: AKots at Oct 21, 2008, 05:40 AM

        Quote from: ikarushka at Oct 21, 2008, 05:03 AM

        Делал так чтоб при добавлении нового документа принудительно чистился кэш - тоже не помогло.
        А как - может как-то неправильно? Симптомы просто очень похожи на то, что документ их кэша берется. Можно в шаблоне написать [^s^], чтобы узнать откуда взят документ.

        Использовал $modx->clearCache(); в своем сниппете сразу после того как документ попадает в БД вызывал clearCache()
        Попробывал добавить [^s^] (не знал о таком чуде - спасибо!) - пишет database - список, зараза, не обновляет. Похоже все-тки дитто - копаю дальше
          • 12736
          • 259 Posts
          Фуф ну вроде нарыл. Вот здесь http://modxcms.com/forums/index.php?topic=28971.0
          Ребяты пишут, что $modx->clearCache(); чистит только кэш страницы, а кэш сайта со всеми документами и деревом не чистит. И не кэшеруемый вызов дитто в этом случае не помогает. Советуют в этом случае вместо Ditto использовать Newspublisher так там есть опция которая чистит кеш посерьезному. Пошел пробывать - о результатах сообщу.

            • 12736
            • 259 Posts
            Ура - уру! grin Короче, я победил. Не стал я юзать NewsPublisher - а просто взял из него кусок кода который чистит кэш:

            include_once $modx->config['base_path']."manager/processors/cache_sync.class.processor.php";
            $sync = new synccache();
            $sync->setCachepath("assets/cache/");
            $sync->setReport(false);
            $sync->emptyCache(); 


            И вставил это дело в свой сниппет сразу после добавления документа - и все закрутилось, и заработало! Не ожидал со стороны Ditto такой подставы, всегда считал его чем-то всемогущим - это меня и подвело wink