Думаю да, понимаю. 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);