Использование Switche устраняет необходимость перебора
условий стандартной конструкции {if}{if:elseif}{/if}
определяемых в шаблоне, что при достаточно большом их
числе замедляет выдачу результата парсинга шаблона:
{if segment_n == "profile"}
{embed="templates/profile"}
{if:elseif segment_n == "panel"}
{embed="templates/panel"}
{if:elseif segment_n == "account"}
{embed="templates/account"}
{if:elseif segment_n == "settings"}
{embed="templates/settings"}
{if:else}
{redirect="404"}
{/if}
В данном случае, прежде, чем будет найдено условие
соответствия segment_n == “settings” будут перебраны
все вышестоящие условия, и не беда, если объектом
поиска соответствия будет являться глобальная переменная,
как в данном случае, - в условиях зачастую используются
регулярные выражения и пр. логика, которая, как для парсинга
шаблона, может оказаться слишком медленной...
В случае же с Switche мы можем получить прямую выдачу
рузультата по найденному case соответсвию, аналогично
работе стандартной php конструкции switch().
{exp:switchee variable = "{segment_n}"}
{case value="profile"}
{embed="templates/profile"}
{/case}
{case value="panel"}
{embed="templates/panel"}
{/case}
{case value="account"}
{embed="templates/account"}
{/case}
{case value="settings"}
{embed="templates/settings"}
{/case}
{case value="404" default="yes"}
{redirect="404"}
{/case}
{/exp:switchee}