[smarty] Помогите записать вывод в шаблоне.

iSlayter

Новичок
[smarty] Помогите записать вывод в шаблоне.

Проблема в том, что не могу вывести закрывающий див после окончания вывода списка городов текущего региона.
Ниже массив сформированный из результата запроса к базе + шаблон + то что шаблон генерирует.
Помогите пожалуйста разобраться!

Результат запроса к базе:
Array
(
[0] => Array
(
[0] => 1
[regionNum] => 1
[1] => Республика Адыгея
[regionName] => Республика Адыгея
[2] => 7
[townId] => 7
[3] => Бабруйск5
[townName] => Бабруйск5
)

[1] => Array
(
[0] => 1
[regionNum] => 1
[1] => Республика Адыгея
[regionName] => Республика Адыгея
[2] => 6
[townId] => 6
[3] => Бабруйск4
[townName] => Бабруйск4
)

[2] => Array
(
[0] => 1
[regionNum] => 1
[1] => Республика Адыгея
[regionName] => Республика Адыгея
[2] => 5
[townId] => 5
[3] => Бабруйск3
[townName] => Бабруйск3
)

[3] => Array
(
[0] => 1
[regionNum] => 1
[1] => Республика Адыгея
[regionName] => Республика Адыгея
[2] => 4
[townId] => 4
[3] => Бабруйск2
[townName] => Бабруйск2
)

[4] => Array
(
[0] => 2
[regionNum] => 2
[1] => Республика Башкортостан
[regionName] => Республика Башкортостан
[2] =>
[townId] =>
[3] =>
[townName] =>
)
)
Текущий шаблон:
{assign var="currentRegionNum" value="0"}
{assign var="counter" value="0"}
{assign var="temp" value="0"}
{assign var="currentTown" value="0"}
{foreach from=$regions item=r}

{if $currentRegionNum != $r.regionNum}
<a href="javascript: show({$r.regionNum});"><img id="region{$r.regionNum}img" src="{$url}templates/default/images/plus.gif" border="0" /></a>
<input type="checkbox" name="regions[{$r.regionNum}]" id="region[{$r.regionNum}]" onclick="unchecktowns({$r.regionNum});" /> {$r.regionName}
<div id="region{$r.regionNum}div" style="display: none;"">
{/if}

{if $r.townName}
<input type="checkbox" name="town[{$r.townId}]" id="town-of-region-{$r.regionNum}[{$counter}]" onclick="check({$r.regionNum},{$counter});" />{$r.townName}<br />
{assign var="counter" value=$counter+1}
{else}
<a href="{$cpurl}index.php?action=towns&amp;mode=add&amp;regionNum={$r.regionNum}" target="_blank" title="Добавить город в регион &quot;{$r.regionName}&quot;">Добавить город в регион &quot;{$r.regionName}&quot;</a>
{/if}

{$temp} ? {$r.regionNum}<br />

{if $temp != $r.regionNum AND $counter!=1}
{assign var="temp" value=$r.regionNum}
{assign var="counter" value=0}
</div><br />
{/if}

{assign var="currentRegionNum" value=$r.regionNum}

{/foreach}
Проблема в шаблоне:
<a href="javascript: show(1);"><img id="region1img" src="http://litmap/templates/default/images/plus.gif" border="0" /></a>
<input type="checkbox" name="regions[1]" id="region[1]" onclick="unchecktowns(1);" /> Республика Адыгея
<div id="region1div" style="display: none;"">

<input type="checkbox" name="town[7]" id="town-of-region-1[0]" onclick="check(1,0);" />Бабруйск5<br /> 0 ? 1 <!-- {$temp} ? {$r.regionNum} для наглядности теукщих значений --><br />

<input type="checkbox" name="town[6]" id="town-of-region-1[1]" onclick="check(1,1);" />Бабруйск4<br />
0 ? 1<br />
</div><br /> <!-- ЭТОТ ЗАКРЫВАЮЩИЙ ДИВ ДОЛЖЕН БЫТЬ ТОЛЬКО В КОНЦЕ СПИСКА ГОРОДОВ! -->

<input type="checkbox" name="town[5]" id="town-of-region-1[0]" onclick="check(1,0);" />Бабруйск3<br /> 1 ? 1<br />

<input type="checkbox" name="town[4]" id="town-of-region-1[1]" onclick="check(1,1);" />Бабруйск2<br /> 1 ? 1<br />

<!-- </div><br /> ДОЛЖНО БЫТЬ ЗДЕСЬ! -->

<a href="javascript: show(2);"><img id="region2img" src="http://litmap/templates/default/images/plus.gif" border="0" /></a>

<input type="checkbox" name="regions[2]" id="region[2]" onclick="unchecktowns(2);" /> Республика Башкортостан
<div id="region2div" style="display: none;"">

<a href="http://litmap/cp/index.php?action=towns&amp;mode=add&amp;regionNum=2" target="_blank" title="Добавить город в регион &quot;Республика Башкортостан&quot;">Добавить город в регион &quot;Республика Башкортостан&quot;</a>

1 ? 2<br />
</div><br />
ps. ухты заметил ещё одну ошибку в формировании id чекбокса и аттрибутов функции check в onclick. это ерунда - помогите с дивом, пожалуйста :)
 

iSlayter

Новичок
блин. короче пожалуй просто тупо в каждом регионе буду вызывать плугин, который будет вытаскивать все города из базы. типа {component name="towns" region=$r.regionNum}
ну регионов у нас порядка 100, допустим будет тысяча городов - с какой скоростью страничка сгенерится, т.е. с какой скоростью сотня запросов пройдет?

зы. первое что приходит на ум - забить в базу дофига тысяч записей а номер региона выбрать случайным образом. и потом посмотреть на время генерации :D

-~{}~ 04.04.07 13:49:

up!
 

Yuriy

Новичок
Зачем нужен smarty? Я думаю для того чтобы отделить логику от вывода. У вас это не получилось. Сформируйте нормальный массив(ы) на стороне пхп и потом по человечески выводите без проблем.
 

WP

^_^
Yuriy
:) Не логику от вывода, а бизнес-логику от логики вывода :)
 
Сверху