Эта тема на forum.dklab.ru


stur: Меню
Что такое меню сайта - по сути это есть карта сайта. Обычно такая карта представляет собой древовидную структуру. Оновные тематические разделы соответствуют главным страницам, потом идут подразделы, которые в свою очередь делятся на более мелкие части ну и так дале. Чем больше становится ваш сайт, тем труднее становится соблюдать его навигационную панель (меню). Особенно трудно становится поддерживать правильную зависимость страниц например пункт меню - следующая страница предыдущая, на уровень вверх. Достаточно добавить (или убавить) одну страницу в раздел и приходится переделывать порой десятки зависимых страниц, чтобы исправить в них навигационные ссылки.
Предлагаю поступить совершенно другим образом. Само дерево меню опишем в одном месте создаем один глобальный массив $arrMenu.
Придтся такой массив присоединять к каждой страничке сайта, а заодно и класс clMenu который его обрабатывает.
Ну вообщем пример можно качать здесь.
Основная единица меню это маленький ассоциативный массивчик вот такого вида:
<?php array('href'=>'index.php','name'=>'главная'=>'главная страница'); ?>
Функция array() создает массив, мы указываем ей элементы массива через запятую ('ключ'=>'значение', 'ключ'=>'значение'...);
Итак указываем:
'href' => 'имя файла'
"name"="название пункта меню" - то, что мы будем видеть, здесь можно писать HTML код любой.
'comment'=>'комментарий' - всплывающая подсказка только текст без HTML.
(все ключи и значения обязательно в кавычках т.к. это строковый параметр). Потом, при генерации элементов меню, php создаст из этого массивчика линк вот с таким HTML кодом:
< a href="index.php" title="главная страница" >главная</a>'
Для создания под меню в элементе надо создать ключ 'subMenu' => array( здесь создаем пункты субМуню )
$arrMyMenu=array(
array('href'=>'index.php','name'=>'главная','comment'=>'главная страница'),
array('href'=>'quickStart.php','name'=>'быстрый старт','comment'=>'сразу к делу', 'subMenu'=>
array(
array('href'=>'firstPage.php','name'=>'первая страница','comment'=>'создание первой страницы'),
// array('href'=>'menu.php','name'=>'меню','comment'=>'создание навигационной системы сайта'),
)
)
);

Вложений (уровней) можно делать сколько хочешь. Еще один важный момент - пункты меню могут ссылаться на один href
с разными параметрами setupKit.php?test=next и setupKit.php?test=xy_is. Если соблюдать правильный стиль записи откр. скобку под закр. то вы никогда не запутаетесь, и очень удобно будет редактировать его ели пункт временно не нужен можно его просто закомментировать.

Мы создали пока только массив, т.е. это пока только данные, а работать с этими данными будет объект класса clMenu.
<?php $GLOBALS['menu']= new clMenu($GLOBALS['arrMenu']); ?>
Методы класса clMenu
treeMenu() - рисует деревянное меню (в виде дерева как windows проводник)
levelMenu() - уровневое меню, каждый уровень рисуется ниже основного отдельным списком но в одной колонке (мое изобретение) пример меню этого сайта
thisItem() - печатает выбранный элемент меню
nextItem() - следующий элемент меню
prevItem() - предыдущий элемент
upItem() - элемент верхнего уровня текущего подменю
rootMenu() - печатает нулевой (главный) уровень меню
verticalMenu() - вертикальное. Имеется в виду вертикаль в дереве меню Выводится так: элемент нулевого уровня, первого уровня, второго и т.д. текущий элемент не печатается.

После создания обета $menu вы можете вызвать любой из этих методов. Используете их при создании страницы.

<TABLE ><TR><TD>...</TD><TD><?php $menu->verticalMenu() ?></TD><TD>...</TD></TR>
...
<TABLE ><TR><TD><?php $menu->prevItem() ?></TD><TD><?php $menu->upItem() ?></TD><TD><?php $menu->nextItem() ?></TD></TR>
</TABLE>
stur:
stur:
Ой забыл пример дабавить
или можно здесь кануть http://phpWhaleKit.com/zipTestMenu.zip
Rumata:
очень похоже на самописный XML.
потом, не все можно загнать в одну более-менее сложную структуру
вы предлагаете карту сайта в виде бинарного дерева, а вдруг у вас появится пункт с двумя (и более) входами/выходами?

пока не для готовых решений
WingedFox:
Кроме того
1. в меню не должно быть разных путей в одно место
2. вёрстка на таблицах это просто ужась. Генерировать список и потом пеобразовывать из CSS значительно проще + готовая карта сайта.
3. Ваше "изобретение" ужасно. Честно. Подменю должно открываться не "где-то там", а рядом с пунктом меню.
Ant:
Перенесено из форума: Склад готовых решений :: PHP.
Перенесено в форум: Разное :: PHP.
stur:
очень похоже на самописный XML.
потом, не все можно загнать в одну более-менее сложную структуру
вы предлагаете карту сайта в виде бинарного дерева, а вдруг у вас появится пункт с двумя (и более) входами/выходами?

Насчет XML согласен, сначала хотел использовать его но потом подумал слишком много возни будет: надо парсер подключать, а это дополнительные модули к php присоединять надо, да и потеря производительности довольно приличная, даже в мануле говорят, что он много ресурсов берет. Двумерный массив на php будет гораздо быстрее рботать, можно кстати его в отдельный файл вынести и include подключать.
На xml конечно нагляднее для новичков, но если соблюдать правилный стиль написания массива писать откр. скобку под закр. то все отлично получается.


"не все можно загнать в одну более-менее сложную структуру"

сударь здесь вы не правы, в php массив можно загнать структуру любой сложности

а вдруг у вас появится пункт с двумя (и более) входами/выходами?

входов/выходов может быть сколько угодно и в каком угодно направлении
если хотите, чтобы на одну страницу было несколько входов добавте в url какой нибудь лишний параметр myPage.php?1 или
myPage.php?tema=php


1. в меню не должно быть разных путей в одно место

1 это почему собственно не должно, может мне понадобится зайти на один и тотже адресс только с разными запросами после ?

2. вёрстка на таблицах это просто ужась. Генерировать список и потом пеобразовывать из CSS значительно проще + готовая карта сайта.

2 "Генерировать список и потом пеобразовывать из CSS" неужели это проще чем построить двух мерный массив на php который уже является и картой сайта и меню одновременно и что значит "верстка на таблицах " если вы имеете в виду мой пример, то это просто пример не больше. Мтеды объекта clMenu можно использовать как угодно, дизайн за вами.


3. Ваше "изобретение" ужасно. Честно. Подменю должно открываться не "где-то там", а рядом с пунктом меню.

Не нравится мое "изобретение" используйте метод для печати обычного деревянного меню treeMenu();.
Rumata:

Rumata писал(а):
"не все можно загнать в одну более-менее сложную структуру"
сударь здесь вы не правы, в php массив можно загнать структуру любой сложности

не все можно предусмотреть в массиве любой сложности.

мой вам совет не изобретайте колеса, а учите алгоритмы и освайвайте языки
Anonymous:

не все можно предусмотреть в массиве любой сложности.
мой вам совет не изобретайте колеса, а учите алгоритмы и осваивайте языки

Не могу понять уважаемый, чем вам не нравится моя идея описать меню сайта в виде массива?
Может быть у вас вызывает, раздражение что задача решается так просто и не надо парится с xml или БД, или вы не умеете работать с php массивами, тогда это вам надо учить языки и осваивать алгоритмы.
Интересно что же такого нельзя предусмотреть в php массиве?
Алгоритм вполне работоспособен и очень удобен в работе.
Почему вы переместили его в другой раздел? Если вам не нравится использование массивов php для задания структуры меню, то это еще не значит что такой вариант никому не подойдет. Или вы продвигаете на форуме только свои идеи? Тогда так и скажите, без лишних советов.
Rumata:
не умеете работать с php массивами
да вы правы, я новичок в PHP и не знаю многих тонкостей этого языка, но это не мешает мне писать алгоритмически правильные скрипты. главный принцип, используемый мной и многими программистами (независимо от используемого языка программирования) - делать проще. ваше решение не самое простое.

Почему вы переместили его в другой раздел?
я не админ и не модератор, я - рядовой пользователь форума

тогда это вам надо учить языки и осваивать алгоритмы.
не языки учить надо, а алгоритмы - всех языков вы все равно не выучите.
WingedFox:
stur:
Пишите, пожалуйста, от своего имени, а не как Гость.

это почему собственно не должно, может мне понадобится зайти на один и тотже адресс только с разными запросами после ?
Это будут разные страницы.

Меню - это символическая структура сайта. Делать вместо дерева граф - это терять пользователей, которые перестанут понимать логику работы сайта, столкнувшись с одинаковыми страницами в разных пунктах меню.

неужели это проще
Ага, проще. Меню вида
<ul>
<li>n1
<ul>
<li>n12</li>
</ul>
</li>
<li>n2</li>
</ul>
Значительно проще обработать с помощью CSS для получения требуемого результата.
И неважно в каком виде карта сайта была изначально.
дизайн за вами.
где он "за мной" если Вы выводите все ссылки за раз, причём я не вижу возможности указать контейнер для каждой из них.

Из ещё замеченного:
Для персонализации элементов в контейнере в CSS предуспотрен механизм множественных классов.
Используй те его вместо $className+номер уровня

обычного деревянного меню treeMenu();.
можно не буду? =)
у меня меню формируется одним запросом из базы и рисуется списком вроде того, что приведён выше.

PS: зачем Вы выложили свою работу, если не хотите принимать критику?
Ant:
Почему вы переместили его в другой раздел?
Хоть я здесь и не модератор, но так как другие модераторы видимо отдыхают, выходит, что я. Ну да не важно. Перенёс я вашу тему на основании следующих правил для «готовых решений»: http://forum.dklab.ru/php/advises/InstructionsForUseThisForum.html. Изучите, пожалуйста, этот документ, чтобы вопросов впредь больше не возникало.

stur:

ваше решение не самое простое.

Это вопрос спорный, на мой взгляд это самое простое решение.

Меню - это символическая структура сайта. Делать вместо дерева граф - это терять пользователей, которые перестанут понимать логику работы сайта, столкнувшись с одинаковыми страницами в разных пунктах меню.

привожу пример:
такое меню можно использовать при создании навигации форума
допустим основной скрипт который обрабатывает данные называется forum.php
для того чтобы зайти в определенный подраздел форума например тема JavaScript
надо зайти по адресу forum.php?tema=JavaScript а чтобы попасть на конкретный пост
пешем так forum.php?tema=JavaScript&post=массивы в JavaScript
вобщем пункт меню будет выглядеть примерно так
array('href'=>'forum.php?tema=JavaScript&post=массивы в JavaScript','name'=>'массивы в JavaScript','comment'=>'вопросы по массивам' content='file13213.txt'),
кстати никто не мешает вам добавить в этот пункт меню какие-то свои данные например клочь content
Такой массив не обязательно прописывать в исполняемый скрипт можно его сериализовать и сохранять во внешнем файле, а потом
читаить от туда. В таком случае мы получаем доступ к файлу с других скрипов, при добавлении новой темы открываем файл прописываем новый пункт и сохраняем его.

где он "за мной" если Вы выводите все ссылки за раз, причём я не вижу возможности указать контейнер для каждой из них.

Обращаю ваше внимание на свойства класса
// текст HTML который будет писаться до и после :
var $beforeItem='<nobr>';//перед простым пунктом меню
var $afterItem='</nobr><br>';//после простого пункта меню
var $beforeSubMenu='<nobr>';//перед пункт у которого есть суб меню
var $afterSubMenu='<small style="font-size:8">+</small></nobr><br>';//после пункт у которого есть суб меню
var $beforeChecked='<nobr>';//перед выбранный пункт
var $afterChecked='<img src="checkInd.gif " alt="" border=0></nobr><br>';//после выбранный пункт
Есть еще свойства отдельно для каждого вида меню смотрите исходник.
Если надо могу откорректировать список свойств и добавить новые, собственно поэтому и хотелось услышать ваше мнение.

Для персонализации элементов в контейнере в CSS предусмотрен механизм множественных классов.

в CSS я имею поверхностные знания поэтому решил упростить
var $classNameCSS='MenuLink';// определяете имя CSS класса для пунктов меню вообще
// если true будет проведенно разбивка по уровням надо только определить эти классы
var $levelCSS=true;
пример файла style.css
.menuLink0 {font-size:100%;text-decoration: none;}
.menuLink1 {font-size:90%;text-decoration: none;}
.menuLink2 {font-size:80%;text-decoration: none;}
.menuLink3 {font-size:70%;text-decoration: none;}

у меня меню формируется одним запросом из базы и рисуется списком вроде того,

а у меня не нодо никаких запросов, потому что все уже на месте
и редактировать мое меню гораздо проще ненужен тебе временно пункт - закомментировал его
переместить в другое место - скопировал вставил
если меню слишком разрастается можно разбить его на отдельные фрагменты и даже расположить их в разных подключаемых файлах
меню в 200-300 пунктов будет обрабатываться быстрее чем один запрос к БД. Я так думаю, хотя таких тестов не делал.

Хотелось бы посмотреть на ваше меню.
WingedFox:
надо зайти по адресу forum.php?tema=JavaScript а чтобы попасть на конкретный пост
пешем так forum.php?tema=JavaScript&post=массивы в JavaScript
Вообще-то, это будут разные адреса.
А "один href" это даже звучит неправильно.
href - аттрибут тега <a>.
Вы же указываете в массиве URI.

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

пример файла style.css
Вот и сделайте

.menu .default {}
.menu .level1 {}
.menu .level2 {}

и соответственно
<div class="menu">
<a class="default level1" ></a>
<a class="default level2" ></a>
</div>

а у меня не нодо никаких запросов, потому что все уже на месте
Для меню в 20-30 пунктов на статическом сайте достаточно и обычного HTML.
Для 200-300 пунктов динамического (каталога) Ваш вариант не прокатит просто потому, что этот массив надо как-то генерировать.
А из базы всё тянется за один запрос.

Здесь все меню на страницах вытягиваются одной процедурой:
http://pilotage-rc.ru/catalogue/
Правда разметка уже не моя...

Само меню (с использованием MDB::NestedSet):

function getMenuTree () {
return $this->ns->getAllNodes(true,true,array('where'=>"menunode_id = ".$this->mnid));
}

stur:

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

напишете так <div> <? $menu->treeMenu() ?> </div>
вот и весь контейнер, или я неправильно понял суть этого вопроса?

На счет css это дельный совет наверно так будет правильнее.
Но старый вариант работает не хуже.


Для 200-300 пунктов динамического (каталога) Ваш вариант не прокатит просто потому, что этот массив надо как-то генерировать.
А из базы всё тянется за один запрос.

Да ненадо его никак генерировать, он же уже у вас в скрипте, ну как вы этого не поймете.
делаем отдельный php файл myMenu.php, там пишем наше меню в виде php массива
$arrMenu=array( ..... );
потом этот файл инклудим в каждую страницу
джалее обрабатываем его
include будет работать гораздо быстрей чем один запрос к БД, а 10 20 кБайт кода из файла myMenu.php займут в памяти места столько же сколько и ваш запрос к БД тем более, что вы вытягиваете всю структуру сразу.

и не надо никаких непонятных MDB::NestedSet откуда новичок знает, что это такое, как это использовать, наверняка надо дополнительные модули подключать.
у меня все просто

<?php include('myMenu.php');
$menu= new clMenu($arrMenu); //обрабатываем исходный массив
unset ($arrMenu); // можно его удалить после обработки
?>
....
и поехали меню в виде дерева
<?php $menu->treeMenu(); ?>
надо указать следуйщи пункт <?php $menu->nextItem(); ?> предыдущий пункт <?php $menu->prevItem(); ?>
и так далее.
WingedFox:
<div> <? $menu->treeMenu() ?> </div>
Хотя бы так
$menu->treeMenu(array("before" => "<li>", "after" => "</li>")

не хуже
Пока уровней вложенности мало и не нужно некоторым ссылкам давать акценты.
Например "текущая", "новая", "популярная".

Да ненадо его никак генерировать
Меню = каталог продукции.
Обновляется 3-4 раза в день.
Соответственно оно может меняться 3-4 раза в день.

А для статического меню есть HTML.
Дмитрий Котеров:
stur:
Не обижайтесь, пожалуйста, насчет переноса. Ant прав: пока обсуждение не закончено, в Готовых решениях тема быть не должна. Сами посудите: придет совершенно незнакомый человек, захочет готовое решение Ваше взять, и запутается. Кстати, Вы же сами из этого обсуждения вынесете много новых знаний.
stur:
$menu->treeMenu(array("before" => "<li>", "after" => "</li>")
вы непрнавильно поняли подход
надо делать так
$menu->beforeItem='<li>';
$menu->afterItem='</li>';
$beforeSubMenu='<li>';
$afterSubMenu='<small style="font-size:8">+</small></li>';
$beforeChecked='<li>';
$afterChecked='<img src="checkIntem.gif " alt="" border=0></li>';
Опс маленькая недоработка надо ввести два новых свойства, чтобы можно было в деревянном меню нижний уровень подменю заключить в какой-то контейнер. Это легко поправить, скоро сделаю.

Пока уровней вложенности мало и не нужно некоторым ссылкам давать акценты.
Например "текущая", "новая", "популярная".
Уровней вложений у моего меню может быть сколько угодно возмите и попробуйте на примере.
А вот кстати ваше меню помоему ограничивается все двумя уровнями и нет у вас элементов навигации типа предыдущая страница последующая. Неизвестно каким образом прописывается у вас вертикаль в дереве - главная/подраздел/еще глубже/
здается мне, что делается в полуавтоматическом режиме.
У меня все этот делается по другому я не пишу так
<a> href="....">главная</a> / <a> href="....">подраздел</a> / <a> href="....">еще глубже</a> /
вместо этого использую метод объекта $menu->verticalMenu();
точно также со ссылкой на следующую мы не пишем <a href='...'> следующая </a> а пишем $menu->nextItem();
точно также с предыдущей страницы
А теперь подумайте, что если вам понадобится перенести страницу из раздела еще глубже в верхний подраздел
вам придется исправлять как минимум 6 страниц, чтобы сохранилась правильная взаимосвяь ссылок на предыдущую, следующую страницу.
А мне ненадо редактировать ничего только исходную структуру массив $arrMenu
вырезаем пункт из радела 'еще глубже' и вставляю его в верхний 'подраздел' итого надо нажать 4 кнопки + один клик мышкой для перемещения курсора.

Обновляется 3-4 раза в день.
Соответственно оно может меняться 3-4 раза в день.

обновляейте сколико хотите, текстовый файл с массивом лежит у вас дома отредактировали его закатали на сервер, не думаю, что загонять данные в БД будет быстрее.
Кстати, очень интересно как у вас БД описывается иерархическая структура меню, неужели по настоящему реляционная БД, таблицы один ко многи и т.д. я вот подозреваю, что у вас все в одной таблице. У вас легко организовать вложение например 5 уровня?
Как вы это делаете?
WingedFox:
stur:
Ой. 8*)

вы непрнавильно поняли подход
надо делать так
Мне надо вставлять меню на нескольких страницах сайта в разном виде.
Для этого делать несколько копий скрипта?


Пока уровней вложенности мало и не нужно некоторым ссылкам давать акценты.
Например "текущая", "новая", "популярная".

Уровней вложений у моего меню может быть сколько угодно
Я имел в виду количество классов в CSS для описания этих уровней.

кстати ваше меню помоему ограничивается все двумя уровнями и нет у вас элементов навигации
В моем меню нет ограничений по вложенности.
Вся навигация создается в полностью автоматическом режиме.

А теперь подумайте, что если вам понадобится перенести страницу из раздела еще глубже в верхний подраздел вам придется исправлять как минимум 6 страниц
Неужто Вы предполагаете что у меня там есть хоть какая-то статика в каталоге?
Мне ничего менять не придётся. Вообще.

Для печати "хлебных крошек" я рисую еще один список, который автоматически приводится к нужному виду из CSS.
Вызов выглядит так
function getPathTree () {
return $this->ns->getParentNodes(true,true,array('where'=>"menunode_id = ".$this->mnid));
}

вырезаем пункт из радела 'еще глубже' и вставляю его в верхний 'подраздел' итого надо нажать 4 кнопки + один клик мышкой для перемещения курсора.
Неверно считаете.
1. открыть файл - 1 клик
2. найти нужную строку - несколько кнопок или щелчков мышой
3. отредактировать файл - 4 кнопки + один клик мышкой
4. сохранить файл - 2 кнопки
5. залить на ftp - ещё несколько кнопок и/или движений мышой.

У меня:
1. Экспорт классификатора из складской программы - 1 клик мышью
2. Импорт на сайт - 2 клика мышью
В принципе можно и на автомате синхронизировать, но руководство было против, когда я разрабатывал систему.

текстовый файл с массивом лежит у вас дома
Жуть. Ни-за-что.
Чтобы секретарша после заливки прайса дёргала меня для правки меню??? =8-[ ]]]]

вот подозреваю, что у вас все в одной таблице.
Вы не подозревайте. Вы почитайте про "вложенные мнолжества".
nested*

Как вы это делаете?
По технологии вложенных множеств.
stur:
Во первых ваш проект коммерческий, наверняка вы делали его на заказ не за просто так, понятно что все там должно быть автоматизировано.
Мое меню я предлагаю всем бесплатно, а дареному коню в зубы не смотрят.
Тот кто захочет может его доработать и полностью автоматизировать, могу и я это сделать, за вознаграждение.
Чтобы, автоматизировать работу с меню его можно сериализавать во внешний файл, и дальше с ним работать, для редактирования могу специальный скрипт написать, нет проблем.
И потом не всем же надо менять структуру по два три раза в день.
За технологии вложенных множеств спасибо, тема довольно сложная но очень интересная, надо разбираться.
Но новичкам тут совсем плохо придется.
WingedFox:
Во первых
Правильно. Но желательно чтобы так было не только в коммерческих проектах.
Даже домашняя страничка может быть началом чего-то большего.

а дареному коню в зубы не смотрят
Я бы сказал что Ваше меню это не дарёный конь, а как раз его зубы 8*)
Если бы Вы подарили кому-либо сайт со встроенным меню, то это будет другой разговор.
Чтобы скрипт стал популярен он должен быть удобным и понятным.
Удобство же Вашего скрипта достаточно относительно. Просто из-за трудностей с автоматизацией обновления меню.

могу специальный скрипт написать, нет проблем.
Хорошая идея.

За технологии вложенных множеств спасибо
Пожалуйста.

Но новичкам тут совсем плохо придется.
Первые 2 часа чтения док =)
Anonymous:
Моя попытка написания карты сайта, для стандартной CMS, закончилась так: arty.jinonet.ru/site_map.php(сайт создан для тестирования).
На небольших сайтах работает вполне успешно. Как поведёт себя на больших порталах- не знаю. Может быть придётся лишнее отрезать.
Maus:
Гость
а исходный код, который всё это генерирует? Может, у Вас там вообще статика :)
WingedFox:
Maus
Реклама это.
На jinonet указывает уже 5 или 6 письмо.

А сейчас страница вообще на whatisthematrix отправляет.
Maus:
whatisthematrix
это моя пакость :)
Вообще - не знаю, что с этим делать?
По ссылке (правильной, которая сейчас отсутсвует) было меню, факт. baev справедливо отметил, что исходного кода не предоставлено - что составляет основной интерес, это тоже факт.
WingedFox:
Maus
jino в живом поиске... гости пишут, имхо - реклама.
Maus:
WingedFox
Живой поиск выдал 4 результата, из них:
1 - про саппорт этого хостинга и не ссылкой
1 - битая ссылка на статью про установку PEAR (зато есть куча статей про нюку)
2 - ведут на один сайт и вероятно, оставлены одним пользователем (olegat)

Достаточно ли для рекламы?

// оффтопим :(. в Мусорку или в Модераторский?
Anonymous:
Это я писал про карту сайта в ответ на Что такое меню сайта - по сути это есть карта сайта. Обычно такая карта представляет собой древовидную структуру. Так как карта сайта пишется под каждый сайт (CMS) индивидуально, код приводить не видел смысла, большеват он для форума и ни чего уникального. А вот что для Вас карта сайта, а что меню- я так и не понял. Хостинг Jino я не рекламирую, я его рекомендую всем любителям халявы в соответствующих темах.
bæv:
код приводить не видел смысла

А в чём смысл страницу с картой сайта приводить?
Anonymous:
Забыл ссылку:http://arty.jino-net.ru/site_map.php
Anonymous:
Начало карты было такое$resul = dbquery("SELECT
news_subject,
news_datestamp,
news_id
FROM ".$fusion_prefix."news");
$rows = dbrows($resul);
if ($rows!=0) {
echo "<br/><ul><li><b>НОВОСТИ</b></li><ul><ul><br/>";

while ($data = dbarray($resul))
{
echo "<li> <a href='../news.php?readmore=".$data['news_id']."'><STRONG>
".$data['news_subject']."</STRONG></a>
- <span class='small'>
".showdate("longdate", $data['news_datestamp'])."
</span>
</li><br/>";
}
echo "</ul></ul><br/><br/>";

}
chin:
Может я, конечно, не по теме... но я тут увидел пропоганду технологии, которой сам заинтересовался, как только мне понадобилось многомерное меню для одного сайта.
<ul>
<li>n1
<ul>
<li>n12</li>
</ul>
</li>
<li>n2</li>
</ul>

Нашел подобную реализацию вот тут: http://efi.com/products/ .. кстати, они там еще и верстают все на дивах.. шаманы блин! (:
Дело в том, что нормального решения я так и не нашел - не так уж и усердно искал, наверное (а писать самому нет времени - и так на мне немаленькая CMS висит).
Так может подсуетите готовое решение? (:
WingedFox:
chin
Я таким образом уже не один десяток менюшек сделал. 8*)

Вот дема моего проекта:
http://www.debugger.ru/temp/cms/test.html

Без излишней скромности, могу сказать что это лучший вариант из существующих.
Архив можно скачать отсюда: http://forum.dklab.ru/js/advises/ProjectCompleteMenuSolution.html

Серверная часть пока не готова. Думаю, на праздниках её доделаю.


кстати, они там еще и верстают все на дивах.. шаманы блин! (:
Да ничего тут сложного нету =)
Практика, практика и ещё немного стандартов.

Если нужно - вот шаблон страницы на дивах. 100% высоты либо по окну, либо - по контенту.
http://debugger.ru/temp/page.htm
chin:
WingedFox - Безмерно благодарен за материал!
Серверная часть пока не готова. Думаю, на праздниках её доделаю.
Думаю, за имением клиентской стороны, серверную я для себя обеспечу (: Мне полюбому помимо этого прийдется еще делать систему управления древовидной структуры меню (в админке). По сути, она у меня уже подается - осталось только разобраться, куда подавать (:

Да ничего тут сложного нету =)
Практика, практика и ещё немного стандартов.

Да я прикалываюсь (: Читал тут где-то поблизости топик подымался про это дело - не Вами ли случайно? Я вот тоже думаю, надо переходить на это дело. Кстати, а что лучше браузером "кушается" - дивы или тэйблы? Что более близко к неповторимым стандартам?
WingedFox:
chin
Всегда пожалуйста 8*)

Серверная часть, за небольшими исключениями, состоит только их функции печати дерева с установленным id корневого элемента, на который потом вешается обработчик меню. 8*)
Так что - ничего сложного здесь нет.

Вообще, у меня серверная часть будет более навёрнутая, для упрощения процесса прикручивания к различным CMS (и не очень CMS системам).

"кушается" - дивы или тэйблы
Сейчас всё кушается хорошо.
Но... надо учитывать, что
1. есть семантическая вёрстка, когда оформление определяет содержание
2. задачи определяют инструменты их решения
3. для каждого типа вёрстки требуется развивать свой образ мышления
4. XHTML 1.1 жёстко описывает что и как использовать (например - таблицы должны содержать только табличные данные)

но это уже - выходит за пределы обсуждения меню 8*)
olegat:
Нашел подобную реализацию вот тут: http://efi.com/products/ .. кстати, они там еще и верстают все на дивах.. шаманы блин! (:
Если Вы имели ввиду выпадающие меню на JavaScript, то с его вёрсткой с успехом справляется программка Javascript Menu Builder GOLD, думаю эти "шаманы" из подобной программы.

Эта тема на forum.dklab.ru