Имеется конструкция :
[+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???
может наоборот?
[[ ]] - кешируемый вызов сниппета.
[! !] - не кешируемый.
та дело не в этом. Сниппет выполняется даже, если условие не верно, хотя не выводится
How could number of mysql queries be more than number of tables in DB???
Естественно, что сниппет выполняется всегда, даже если неверная страница. Данное условие означает только то, что все, находящиеся в параметре then, будет подставлено в генерируемый код или не будет. При этом важна последовательность действий.
При использовании кэшируемого вызова ([[Ditto ]]) сначала выполняется запрос Ditto и генерируется результат, а только потом плагин phx проверяет, нужно ли добавлять результат на страницу или нет, и если не нужно, то не добавляет – в итоге в кэш страницы код не добавляется (если сама страница кэшируется). Если страница не кэшируется, то Ditto будет выполняться всегда.
Если вызов некэшируемый ([!Ditto !]), то сначала выполняется плагин phx, и в генерируемый код добавляется вызов Ditto, если страница правильная, или пусто в противном случае. То есть вне зависимости от того, кэшируется страница или нет, сначала выполняется phx, а только потом Ditto, причем только на нужной странице.
То есть все правильно, в соответствии с особенностями работы системы.