Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Удобное редактирование различных меню.


Автор: Alexey007 25.4.2007, 21:37
I. Меню с вложениями
Код

<a href="#"><b>Заглавие</b></a>
    <div>
    <a href="LINK">текст</a>
    <a href="#">Вложение 1</a>
       <div>
       <a href="LINK">Вложение 1 текст</a>
       <a href="LINK">Вложение 1 текст</a>
       </div>
    </div>

Мне требуется сделать саму модерацию этого меню.. т.е. чтобы модно было удобно редактировать человеку, совершенно не знающему тегов и прочего... Да и ещё, чтобы была возможность добавлять новые закладки.. Вообщем редактирование полное: от удаления до добаления.
У меня есть мысли, но не знаю как их вотворить в жизнь:
1. прочитать файл построчно
2. выделить заглавие между мервыми <a> и </a> и срдержимое вставить в отдельное поле редактирования названия.
3. Выбрать все что между последующими <div> и </div>.. сделать с этим тоже самое.. но теперь чтобы ещё было поле и ссылки
4. если между этими <div> и </div> есть ещё вложения, повторить пункт 3
5. если есть вложения ещё -> проделывать пункты 4 и 3.
6. если с этим заглавием закончено -> переходить к следущему.
7. заменить содержимое файла на то, что только что получили.

Помогите пожалуйста как быть?


II. Боковое меню
Код

echo $my->menu_top();
echo $my->menu_url('LINK 1', 'Текст 1');
echo $my->menu_url('LINK 2', 'Текст 2');
echo $my->menu_url('LINK 3', 'Текст 3');
echo $my->menu_bottom();

echo $my->menu_top();
echo $my->menu_url('LINK 4', 'Текст 4');
echo $my->menu_url('LINK 5', 'Текст 5');
echo $my->menu_url('LINK 6', 'Текст 6');
echo $my->menu_bottom();

Тут тоже нужно редактирование такое же как и в пункте I.
И тут ещё нужно, чтобы редактировалось положение менюшек (т.е. чтобы редактировался порядок вывода менюшек)
Есть мысль, чтобы сами менюшки хранить в отдельных файлах.. а в базе данных хранить само порядок их вывода

Offtop Топик будет долго житьsmile

Автор: PARROT 25.4.2007, 22:17
Alexey007, меню выводи из базы, пиши админку и редактируй.

Автор: Alexey007 25.4.2007, 23:49
А примерно в каком виде хранить в базе? Какие поля там нужны будут? и сколько таблиц?

Автор: kit_kat 26.4.2007, 01:07
Обычно
id
pid (кто родитель)
name

Потом рекурсивная функция построения меню с любым уровнем вложенности подменю.

http://webinfa.ru/one618.html

Автор: Alexey007 26.4.2007, 16:57
Этот метот подходит, если есть 1 заголовок и в нем вложены ссылки.
А если допустим есть Вот такая штука, мне получается нужно делать бесконечно много этих самых таблиц:
Или я что-то не понял? И из статьи я понял, что должно быть 2 таблицы, в одной храняться заголовки,в другой сами вложения.
Заголовок
 -Текст
 -Текст
 -Текст
     -Текст
     -Текст
         -Текст
         -Текст
         -Текст
     -Текст
 -Текст

Автор: PARROT 26.4.2007, 17:11
Работа с деревьями http://vingrad.ru/PHP-FAQ-002203

Автор: Alexey007 26.4.2007, 23:01
Что-то тормозит у меня эта функция...
Можно её как-нибудь оптимизировать?
Надо как-нибудь сделать, чтобы ДИВ ЗАКЛАДКИ не появлялся в самом начале, а выделял только сами вложения(группы вложений)..
Надо чтобы работал скрипт быстро и не ел много памяти.
Код

function ShowTree($ParentID, $lvl) {
global $lvl;
$lvl++;
$q="SELECT * FROM top_menu WHERE pid=".$ParentID." ORDER BY id";
    $result=mysql_query($q);
if (mysql_num_rows($result) > 0) {
echo 'ДИВ ЗАКЛАДКИ<br>';
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];
$www = $row["www"];
echo '<A HREF="'.$www.'">'.$row["text"].'</A><br>';
ShowTree($ID1, $lvl);
$lvl--;
}
echo 'ЗАКР ДИВ ЗАКЛАДКИ<br>';
}
}
ShowTree(0, 0);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)