We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16289
    • 121 Posts
    Имеется конструкция :

    [+phx:if=`[*id*]`:is=`81`:then=`
          [[Ditto? &parents=`15` &startID=`15`  &removeChunk=`Comments` &tpl=`ditto_portfolio` &paginate=`1` &extenders=`dateFilter,tagging` &paginateAlwaysShowLinks=`1` &dateSource=`pub_date` &tagData=`partnersTags` &tagDelimiter=`,`  &dateFormat=`%d.%m.%Y` &sortBy=`pub_date` &id=`portfolio2`]]
       `+]


    Выполняется 17 запросов к БД не на странице 81!

    А при такой:
    [+phx:if=`[*id*]`:is=`81`:then=`
          [!Ditto? &parents=`15` &startID=`15`  &removeChunk=`Comments` &tpl=`ditto_portfolio` &paginate=`1` &extenders=`dateFilter,tagging` &paginateAlwaysShowLinks=`1` &dateSource=`pub_date` &tagData=`partnersTags` &tagDelimiter=`,`  &dateFormat=`%d.%m.%Y` &sortBy=`pub_date` &id=`portfolio2`!]
       `+]


    всего 4!!!
    Почему так?
      How could number of mysql queries be more than number of tables in DB???
      • 11188
      • 49 Posts
      может наоборот?

      [[ ]] - кешируемый вызов сниппета.
      [! !] - не кешируемый.
        • 16289
        • 121 Posts
        та дело не в этом. Сниппет выполняется даже, если условие не верно, хотя не выводится
          How could number of mysql queries be more than number of tables in DB???
          • 785
          • 2,113 Posts
          Естественно, что сниппет выполняется всегда, даже если неверная страница. Данное условие означает только то, что все, находящиеся в параметре then, будет подставлено в генерируемый код или не будет. При этом важна последовательность действий.
          При использовании кэшируемого вызова ([[Ditto ]]) сначала выполняется запрос Ditto и генерируется результат, а только потом плагин phx проверяет, нужно ли добавлять результат на страницу или нет, и если не нужно, то не добавляет – в итоге в кэш страницы код не добавляется (если сама страница кэшируется). Если страница не кэшируется, то Ditto будет выполняться всегда.
          Если вызов некэшируемый ([!Ditto !]), то сначала выполняется плагин phx, и в генерируемый код добавляется вызов Ditto, если страница правильная, или пусто в противном случае. То есть вне зависимости от того, кэшируется страница или нет, сначала выполняется phx, а только потом Ditto, причем только на нужной странице.
          То есть все правильно, в соответствии с особенностями работы системы.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации