ShelbiX
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Привет, недавно возникла необходимость реализовать возможность отображения конкретного пункта горизонтального меню в зависимости от страницы. В моем случае меню используется на статических страницах, но по аналогии можно сделать и на других. для начала в таблице _speedbar добавим поле например statpage varchar(50). Дальше лезем в файл admin/templates/admin_standard/speedbar/speedbar.tpl, в нем добавляем пару текстбоксов в таблицы например: <input name="data[{$speed->id}][statpage]" type="text" id="data[{$speed->id}][statpage]" value="{$speed->statpage}" size="20"> //для редактирования пункта <input name="statpage" type="text" id="statpage" size="20"> //для добавления нового пункта после этого переходим в файл speedbar.php (тоже в админке). в нем модифицируем: if($_REQUEST['do']=="new"){ $sql = $db->Query("INSERT INTO ".PREFIX."_speedbar (id,section,posi,slink,linkname,aktiv,target,statpage) VALUES ('','$_REQUEST[area]','$_REQUEST[posi]','$_REQUEST[slink]','$_REQUEST[linkname]','$_REQUEST[aktiv]','$_REQUEST[target]','$_REQUEST[statpage]')"); header("Location:speedbar.php?area=".$_REQUEST['area'].""); } if($_REQUEST['send']==1){ $data = $_REQUEST['data']; $dsql = $db->Query("SELECT id FROM ".PREFIX."_speedbar WHERE section='$area' order by posi asc"); while ( $row = $dsql->fetcharray()) { $i = $row['id']; $dbs = $db->Query("UPDATE ".PREFIX."_speedbar set posi='".$data[$i]["posi"]."', slink='".$data[$i]["link"]."', linkname='".$data[$i]["title"]."', aktiv='".$data[$i]["aktiv"]."', target='".$data[$i]["target"]."', statpage='".$data[$i]["statpage"]."' WHERE id='".$data[$i]["sid"]."' AND section='$_REQUEST[area]'"); } } С админкой закончили, можно проверить работу, если все хорошо, едем дальше. На главной странице у меня горизонтального меню нет, оно нужно для статических страниц, поэтому привязку к страницам я делал по параметру page=xxx Для того, чтобы вывести горизонтальное меню на статической странице недостаточно прописать {$speedbar} в файле .tpl, нужно в файле system/static.php добавить //----------------Горизонтальное меню---------------------------------------- $tmpl->assign("page", $_REQUEST['page']); switch ($_REQUEST['page']) { case "ваш_статик_пейдж": $mmenu = "1"; break; case "ваш_статик_пейдж2": $mmenu = "2"; break; } $tmpl->assign('speedbar', speedbar($area)); //этой строчки достаточно для вывода горизонтального меню //-------------------------------------------------------- теперь должно отображаться. дальше переходим в файл inc/functions.php и меняем функцию speedbar global $db,$THEME, $mmenu; //добавляем в глобал $mmenu $sql_sp = $db->Query("SELECT slink,linkname,target FROM " . PREFIX . "_speedbar WHERE section='$sectionid' AND aktiv='Y' AND (otdel LIKE '%$mmenu%') order by posi asc"); Это все. Должно работать. в админке в поле statpage вводим номера статических страниц (можно через ; ), на которых вы хотите отображение данного пункта. Кстати, пока писал мануал, пришла идея более простой реализации, сразу опишу, но ее не проверял: вместо цифр в админке вводить названия статических страниц, тогда в system/static.php достаточно добавить только $tmpl->assign("page", $_REQUEST['page']); $tmpl->assign('speedbar', speedbar($area)); а в inc/functions.php вместо $mmenu вписать $page вроде должно сработать |