делал трехколоночный макет для twitter bootstrap, в нем сетка по другому называется но суть будет понятна…
<div class="row-fluid">
{if $count_sidebar_left > 0}
<div class="span3">
{print_modules position="sidebar_left"}
</div>
{/if}
<div class="{if $count_sidebar_left != 0 }{if $count_sidebar_right != 0 }span6{else}span9{/if}{elseif $count_sidebar_right != 0}{if $count_sidebar_left != 0 }span6{else}span9{/if}{else}span12{/if}">
{if $count_maintop > 0}
{print_modules position="maintop"}
{/if}
{if $messages}
<div class="sess_messages">
{foreach $messages as $message}
{$message}
{/foreach}
</div>
{/if}
{print_body}
{if $count_mainbottom > 0}
{print_modules position="mainbottom"}
{/if}
<div class="row-fluid">
{print_pathway separator="—›"}
</div>
</div>
{if $count_sidebar_right > 0}
<div class="span3">
{print_modules position="sidebar_right"}
</div>
{/if}
</div>
основное тут
<div class="{if $count_sidebar_left != 0 }{if $count_sidebar_right != 0 }span6{else}span9{/if}{elseif $count_sidebar_right != 0}{if $count_sidebar_left != 0 }span6{else}span9{/if}{else}span12{/if}">
шаблон имеет 12 колонок
для левого или правого сайдбара отведено по три колонки
проверяем есть ли модули в левом сайдбаре, если есть задаем центральной области ширину в 9 колонок
теперь перед тем как задать центру ширину проверяем есть ли модули в правом сайдбаре и если есть то
центральной области задаем ширину 6
и последняя проверка, если есть модули в правом сайдбаре, и нет модулей в левом, то центральной области задаем ширину 9
если ни одно из условий не выполнено центральной области будет задана ширина 12
Переделать под любую сетку — дело пяти минут…
span заменить на grid… или пересчитать если сетка на 16, 24 колонок…