Вроде получилось. Работать корректно будет только в том случае, когда одновременно открыт только один пункт меню.
Итак, для начала нам понадобится какой-нибудь php файл, например 1.php (если название будет другое, то не забудьте изменить его и в функции jQuery.post). В него помещаем вот такой код:
PHP код:
<?php
if (session_id()=='') session_start();
if (isset($_POST["menu_id"])) $_SESSION["menu_id"]=$_POST["menu_id"];
?>
Весь остальной код (тот, который будет на каждой страничке или в шаблоне):
PHP код:
<?php if (session_id()=='') session_start(); ?>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<style type="text/css">
ul#menu, ul#menu ul {
list-style-type:none;
margin: 0px;
padding: 0px;
width: 250px;
}
ul#menu a,ul#menu span { display: block; text-decoration: none; }
ul#menu li { margin-top: 1px; }
ul#menu li a,ul#menu li span {
background: #333333;
color: #FFFFFF;
padding: 7px;
}
ul#menu li a:hover,ul#menu li span:hover { background: #000000; }
ul#menu li ul li a {
background: #CCCCCC;
color: #000000;
padding-left: 20px;
}
ul#menu li ul li a:hover {
background: #AAAAAA;
border-left: 5px #000000 solid;
padding-left: 15px;
}
</style>
<ul id="menu">
<li><span>Скрипты</span>
<ul id="1">
<li><a href="log_info.php">Скрипт записи логов</a></li>
<li><a href="current_time.php">Текущая дата и время</a></li>
<li><a href="slide_show_jquery.php">Слайд-шоу на jQuery</a></li>
<li><a href="scroll_to_top.php">Кнопка вверх</a></li>
</ul>
</li>
<li><span>Онлайн-сервисы</span>
<ul id="2">
<li><a href="csscompressor.php">Сжатие CSS кода онлайн</a></li>
<li><a href="javascriptcompressor.php">Сжатие JavaScript кода</a></li>
<li><a href="opennet.php">Калькулятор диапазонов IP</a></li>
<li><a href="qrcoder.php">Онлайн генератор QR кодов</a></li>
<li><a href="gtmetrix.php">Анализ скорости сайта</a></li>
</ul>
</li>
<li><a href="http://usefulscript.ru/support.php">Поддержка</a></li>
<li><a href="http://usefulscript.ru/forum/">Форум</a></li>
<li><span>Хитрости</span>
<ul id="3">
<li><a href="csssprites.php">Использование CSS спрайтов</a></li>
<li><a href="rgb_cod_color.php">HEX и RGB коды цветов</a></li>
<li><a href="no_www.php">Убрать www из адреса сайта</a></li>
</ul>
</li>
</ul>
<script type="text/javascript">
function init_menu() {
<?php
if (isset($_SESSION["menu_id"])) echo "$('#menu ul[id!=\"".$_SESSION["menu_id"]."\"]').hide();";
else echo "$('#menu ul').hide();"
?>
$('#menu li span').click(
function() {
var checkElement=$(this).next();
jQuery.post("1.php",{menu_id:$(this).next().attr("id")});
if((checkElement.is('ul')) && (checkElement.is(':visible'))) { return false; }
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#menu ul:visible').slideUp('normal');
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {init_menu();});
</script>
Как видно из приведенного кода, изменения минимальны: первой строчкой добавилось <?php if (session_id()=='') session_start(); ?>
Если сессии на Вашей страничке уже стартовали ранее, то данную строчку можно удалить.
Далее, каждому элементу ul мы присваиваем уникальный id (например, <ul id="1"> и т.д.).
Ну и в конце небольшие изменения коснулись функции init_menu().