То есть вы понимаете о чем я?
Думаю да, понимаю. 99% расклад такой: не зависимо от того, какое у вас условие на уровне шаблона (я про [[!If?), чанки [[$fullTemplate]] и [[$mobileTemplate]] будут отработаны в любом случае. Это особенности MODX-парсера. Это вам не чистый php, где если условие if() не выполнилось, то и внутри него ничто не выполнится. А здесь If — это даже не функция, а просто тег (если говорить про шаблонизацию). В результате он или выведет, или не выведет результат. Но результат внутри в любом случае будет, то есть внутренние теги отработаются.
Это одна из серьезных таких причин, по которой мы используем modxSmarty, а не нативную шаблонизацию MODX-а. На уровне Smarty это было бы так:
{$modxSiteTemplate = $modx->getPlaceholder('modxSiteTemplate')} {if $modxSiteTemplate == 'full'} full {chunk name=fullTemplate} {else if $modxSiteTemplate == 'mobile'} mobile {chunk name=mobileTemplate} {/if}
Вот тут четко будет или одно выполнено, или другое.
Если хотите делать на чистом MODX-е, тогда не сниппет If вызывать надо, а свой сниппет напишите, который четко по условию будет вызывать тот или иной чанк. return $modx->getChunk($chunkName);
P.S. Код надо оборачивать в теги <code> ?