Огромное спасибо.
-~{}~ 21.09.06 15:59:
Пытаюсь разобраться дальше и наткнулся на такую проблему:
Требуемая стуктура левого меню:
Блок 1
-- Раздел 1 (блока 1)
-- Раздел 2 (блока 1)
-- Раздел 3 (блока 1)
-- Раздел 4 (блока 1)
Блок 2
-- Раздел 1 (блока 2)
-- Раздел 2 (блока 2)
-- Раздел 3 (блока 2)
-- Раздел 4 (блока 2)
Использую шаблон и обработчик (см. ниже).
Все работает без проблем. Теперь требуется подкрасить троки меню (Раздел 1, Раздел 2 и т.д.) разными цвета
(получить "полосатое" меню). Я ввожу в шаблон 2 варианта меню и в обработчике устанавливаю чередование.
Это срабатывает, но в итоге
получается следующее:
Блок 1
-- Раздел 1 (блока 1) - ord
-- Раздел 3 (блока 1) - ord
-- Раздел 2 (блока 1) - even
-- Раздел 4 (блока 1) - even
Блок 2
-- Раздел 1 (блока 2) - ord
-- Раздел 3 (блока 2) - ord
-- Раздел 2 (блока 2) - even
-- Раздел 4 (блока 2) - even
То есть он сгруппировал структуру меню по кускам шаблона.
Скорее всего я некорректно понямаю принцип обработки шаблона и прошу Вашей помощи.
Вот листинги:
(блоки и разделы хранятся в одной таблице)
PHP:
<?php
//-- Загрузка левого меню --
$template = tmpl_open('./blocks/left_menu.html');
$query = "SELECT t1.`cat_id`,t1.`cat_level`,t2.`name`,t3.`mod_id`, t3.`file`
FROM `parts` AS t1
LEFT JOIN `part_names` AS t2 ON t1.`cat_id` = t2.`cat_id`
LEFT JOIN `modules` AS t3 ON t2.`mod_id` = t3.`mod_id`
WHERE t1.`cat_level` IN (1,2)
ORDER BY t1.`cat_left`";
$result = $db->Execute($query);
$i=1;
while($row = $result->FetchRow()) {
if ($row['cat_level'] == 1) {
tmpl_iterate($template, 'topic');
tmpl_set($template, 'topic', $row);
}
if ($row['cat_level'] == 2) {
if ($i == 1) {
tmpl_iterate($template, 'topic/menu_ord');
tmpl_set($template, 'topic/menu_ord', $row);
$i = 0;
} else {
tmpl_iterate($template, 'topic/menu_even');
tmpl_set($template, 'topic/menu_even', $row);
$i = 1;
}
}
}
echo tmpl_parse($template);
?>
Шаблон:
PHP:
<table>
<tmpl:topic>
<tr>
<td>Topic - {name}</td>
</tr>
<tmpl:menu_ord>
<tr>
<td>ord - {name}</td>
</tr>
</tmpl:menu_ord>
<tmpl:menu_even>
<tr>
<td>even - {name}</td>
</tr>
</tmpl:menu_even>
</tmpl:topic>
</table>