PEAR Sigma и foreach

gryg

Guest
PEAR Sigma и foreach

Люди, всем доброго время суток.
У меня такая проблема, есть ассоциированный массив пунктов меню:
ключ это урл,
значение это название пункта меню,
форычем прохожусь по массиву следующим образом:

$menu_arr["feedback.php"]="Написать нам";
$menu_arr["vacancies.php"]="Вакансии";
$menu_arr["contract.doc"]="Договор";
foreach($menu_arr as $key=>$val){
if($script_name.".php"==$key){
$tpl->setVariable("text", $val);
$tpl->parse("no_link_row_menu");
}
else{
$tpl->setVariable("href", $key);
$tpl->setVariable("text", $val);
$tpl->parse("link_row_menu");
}
}

для того, что бы при переходе на конкретную страницу, пункт меню, соответствующий этой странице был простым текстом, а не ссылкой. Все парсится нормально, но тот пункт меню, который превращается из ссылки в простой текст, почему-то перемещается вверх списка, каким бы он по счету не был в массиве. Я считаю, что это глюк, подскажите, как от него избавится, все пункты меню, должны оставаться на своих местах.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Надо посмотреть файл example_2.php, прилагающийся к пакету.
 

gryg

Guest
Автор оригинала: Sad Spirit
Надо посмотреть файл example_2.php, прилагающийся к пакету.
В моем коде все сделано точно так же как и в пункте 3 файла example_2.php,
но все равно простой текст уходит вверх списка. Может я чего-то недоглядел, подскажите пожалуйста.
 

gryg

Guest
Спасибо большое все получилось!
Описываю решение для будущих поколений:
1) Нужно было в темплейтах оба блока, которые описывают пункт меню со ссылкой, и простым текстом заключить еще в один внешний блок;
2) А парсить следующим образом:
$menu_arr["feedback.php"]="Написать нам";
$menu_arr["vacancies.php"]="Вакансии";
$menu_arr["contract.doc"]="Договор";
foreach($menu_arr as $key=>$val){
if($script_name.".php"==$key){
$tpl->setVariable("text", $val);
$tpl->parse("item_no_link_menu");
}
else{
$tpl->setVariable(array("href"=>$key, "text"=>$val));
$tpl->parse("item_link_menu");
}
$tpl->parse("row_menu");
}
$tpl->parse("menu");
 
Сверху