Forum Webscript.Ru
Разное => Флейм => Тема начата: cosss от 24 Февраля 2004, 16:35:00
-
Знаете есть такая система навигации по сайту "хлебные крошки" ее иногда (Якоб Нильсен) называют. Она выглядит примерно так "главная-->раздел-->статья". Подскажите пожалуйста как это с помощью пхп осуществить?
-
А конкретнее можешь?
-
cosss
все зависит от структуры сайта.
-
cosss
Да уж, без знания понятия, только по твоим объяснениям сложно понять (точнее, слишком уж просто это кажется по твоим объяснениям).
-
cosss Делается это сверху вниз, циклом. Понятно?
-
Neter
Мне, например, нет... :rolleyes:
-
строишь дерево, а-ля карта сайта...
-
metton Какой вопрос - такой ответ. По имеющимся данным это максимум что я могу посоветовать ;)
-
Скиньте линк, для особо непонятливых! (CGVictor
metton)
И вообще: кто мешает использовать NestedSets/NestedTrees плюс база?
-
Вы чё, все издеваетесь??? или на умняк пробило?
При хранении структуры сайта в базе надо организовать хранение так, чтобы
- каждый элемент, который является потомком, входил в подкатегорию своего родителя.
- уровень родителя должен иметь описание, он в тоже время может быть потомком...
- каждый элемент должен также иметь описание
При выводе нужно:
- вывести все описания вышестоящих элементов, т.е. родителей
- в конце вывести описание самого элемента
Алгоритм вывода описания потомков родителей зависит от метода хранения информации о структуре сайта. Тут будет уместным упомянуть пресловутые Nested Sets, хотя ничто не мешает хранить эту информацию по-другому.
Ссылочка для особо непонятливых, что ему нужно:
http://www.macromedia.com/devnet/mx/dreamweaver/php.html
строка:
/home/Developer Center/Dreamweaver Developer Center /
cosss
на РНР это осуществляется точно также, как и на других языках, сначала надо знать алгоритм.
-
Ну структура сайта в общем обычная. Индекс на верху, дериктории соответствуют разделам (по англ. есессно). Ну и например...
c:\\publications\\stuff\\025.html
считайте, что "c:" это index.html
Дальше... Есть разделы сайта, и они как-то называются и вот мне надо доставать полный путь текущей страницы, но не с названиями дерикторий, а с названиями разделов.
PS
про NestedSets можно что-нить почитать?
-
Yukko Надеюсь теперь ты понял кому ты это написал :)
cosss Родной, сделай проще - ручками набей :)
-
Yukko Надеюсь теперь ты понял кому ты это написал
Не, зря ты так...
Сайт-то большой ручками неудобно, проще вас тут немного помучить и написать таки скрипт.
-
cosss
у тебя хостинг под Windows или это ты просто локально сайт тестируешь ?
В принципе ничего сложного нет. Делаешь explode("\\", $path) - получишь массив. Проходишься по каждому элементу массива и строищь меню.
-
Макс
Мда, зря я путь как в винде написал для примера... Плохая метафора.
explode разбивает слова? а как мне $path сделать? Вобщем не понял я...
-
что делает explode - читай в мануале ([p]explode[/p])
---
Наверное самое простое :
$path = dirname($_SERVER[\'PHP_SELF\']); - получаешь текущую папку, в которой находится юзер. Она будет иметь вид:
/dir1/dir2/dir3
строкой:
$dirs = explode("/", $path);
ты получишь массив папок: array("dir1","dir2","dir3");
Путь, который тебе надо будет построить будет состоять из ссылок:
1. /index.php - корень сайта
2. /dir1/index.php - первая папка
3. /dir1/dir2/index.php - вторая папка
4. /dir1/dir2/dir3/index.php - третья папка
5. $_SERVER[\'PHP_SELF\'] - текущий файл
Первый и последний пункты добавляешь ручками, а те что между ними в цикле:
foreach ($dirs as $dir) {
... // формируешь путь
}
-
Вобще, на заре своего занятия кодингом на ПХП когда я ещё не знал что такое MySQL помню тоже такую шнягу мне надо было сделать, создавал свой первый и последний супер-мега-портал ;) Так вот, я в каждой директории ложил файл index.txt с названием рубрики и её описанием и просто в цикле спускался к корню сайта паралельно читал Индексы, выводя названия рубрик.
-
Макс
Ну терь ясно немного, а NestedSets?
-
http://detail.phpclub.net/article/db_tree
-
Бррр, рано мне еще наверно
-
Neter:
Надеюсь теперь ты понял кому ты это написал
какая разница, или форум - скорая помощь отдельному индивиду??? Нет родной, я сам по тем топикам, в которых отвечал, поиск иногда делаю, кто-то другой прийдет, он не будет говорить, что рано ему еще, он прочитает и сделает, а вот из первых 10 сообщений высказать что-то внятное только CGVictor смог...
cosss:
Бррр, рано мне еще наверно
Поражают меня люди, которые глянув на проблему издалека расписываются в собственной тупости... Да нету ничего сложного в этих Nested Sets, один раз сядь и на всю жизнь разберись... Ты что считать не умеешь? Один, два, три.... так вот в Nested Sets, чтобы их понять, нужно только считать уметь, а чтобы доехать до этого, нужно только почитать предложеную статью. Уже даже на русском языке материалы писать начали, уже разжевывают...
cosss:
проще вас тут немного помучить и написать таки скрипт.
никто тебе на блюдечке решение не даст... и скрипт писать ты сам будешь, поэтому у тебя сейчас есть альтернатива, либо один раз разобраться и задать вопросы по существу, либо набивать руками, все!!! хотя нет, еще можно пойти с протянутой рукой в форум Поиск и изготовление скриптов.
-
Yukko Просто я изначально понял что он про про базу даже и не грезит, а ты про нестед сетс, нечего вокруг них ажиотаж устраивать я ещё не начал таких пректов делать в которых мне бы потребовалась работа с двоичными деревьями, а ты уже бедному парню их агетируешь, пусть он хоть мозги включит для начала.. Ты сам то понимаешь когда надо их юзать (я не про мозги :))?
cosss Почитай моё предыдущее сообщение, если уж делаешь извратно то извратись красиво :)
-
Neter
Человек, объясните мне, глупому, а при чём тут двоичные деревья?!
-
Neter
читай внимательно:
Yukko:
Алгоритм вывода описания потомков родителей зависит от метода хранения информации о структуре сайта. Тут будет уместным упомянуть пресловутые Nested Sets, хотя ничто не мешает хранить эту информацию по-другому.
Я что, кому-то именно нестед сетс парить начал???
Я ему сказал, что в нестед сетс разбираться нечего, когда он ныть начал, что это трудно.
-
metton Думаю при том что на этой структуре построены Nested Sets.
-
2Neter
Думаю при том что на этой структуре построены Nested Sets
Зря ты так думаешь. "Двоичные деревья" словосочетание бесспорно красивое. Но тут оно не к месту.
-
Neter
не выставляйся, еще глупостей каких-нибудь наговоришь...
Макс дал ссылку, чем флеймить по чем зря, лучше бы пошел, да почитал...
-
Прочитал про нестед сетс.
Эх, когда же я перестану так безбожно тупить.. извините.
-
Neter
Не каждая глупость - тупость. Некоторые оказываются гениальными :)
2All
Yukko:
Да нету ничего сложного в этих Nested Sets, один раз сядь и на всю жизнь разберись...
Идея хорошая. Хотя я в них так и не разобрался. Просто не понимаю, какая выгода с того, что можно так организовать данные...
Мне намного больше нравятся NestedTrees, хотя бы потому, что меньше писать. И памяти/места жрут немного меньше. А процессорного времени - больше. Но мы ведь платим за место, не так ли?
cosss:
рано мне еще наверно
Никому не рано, никогда не поздно.
[OFF]Что бы там Ромик не говорил.[/OFF]
И все-таки, обьясните, в чем заключается концепция "хлебных крошек"? Я в этом обсуждении заметил всё (NS,NT,2T,ЧПУ т.д.), кроме самого вопроса.
-
CGVictor
где ты тут ЧПУ увидел?
CGVictor:
в чем заключается концепция "хлебных крошек"?
Ну называет он их так! он объяснил, что ему надо. Все!!! отстань от человека.
CGVictor:
Просто не понимаю, какая выгода с того, что можно так организовать данные...
Еще раз повторяю, нет ни какой разницы в контексте данного вопроса, какой из существующих и зарекомендовавших себя способов используется для хранения данных!
Тому, кто задал этот вопрос, мы помочь не можем
1. так как не знаем, как у него организовано хранение данных
2. так как скорее всего оно никак не организовано.
Все остальные, кто жаждет ответа на подобный вопрос, должны выполнить несложную последовательность действий, которую я описал тут (http://forums.webscript.ru/showthread.php?s=&postid=102155#post102155).
-
[OFF]
Yukko
$path = dirname($_SERVER[\'PHP_SELF\']); - получаешь текущую папку, в которой находится юзер. Она будет иметь вид: /dir1/dir2/dir3
строкой: $dirs = explode("/", $path);
ты получишь массив папок: array("dir1","dir2","dir3");
Путь, который тебе надо будет построить будет состоять из ссылок:
Не совсем то, но близко.
[/OFF]
Граждане, выражайтесь яснее!
-
CGVictor
Сходи по ссылке, которую я дал, на макромедию посмотри, что ему надо сформировать, а также почитай то, что я написал ниже, и ты поймешь, что
1. список папок, который выведется подобным образом не является URL\'ом который надо будет ввести для получения этой страницы!
2. ЧПУ тут ни каким боком.
3. мало того, список папок, который ты выведешь не будет явяляться "системой навигации", как ее назвал cosss
Чтобы окончательно дать понять, что ЧПУ тут не причем, попытаюсь намекнуть:
У тебя есть путь bla1/bla2/bla3/index.php
В bla1 у него лежит весь материал по продуктам той же макромедиа
В bla2 у него лежит материал по Flash MX
В bla3 у него лежит публикация с коментариями про плеер Flash MX
index.php получает на вход кучу параметров, которые говорят, отображать или не отображать коментарии, что подсветить на странице и мало ли что еще. Выглядит это вот так:
server/bla1/bla2/bla3/index.php?comments=0&hightlight=flash&hightlightcolor=red&user=lamo
если это ЧПУ, то я доярка в колхозе.
А вывести этот скрипт должен:
:: Macromedia :: FlashMX :: Flash PlayerMX ::
(твои пресловутые хлебные крошки — ::)
или
/ Macromedia / FlashMX / Flash PlayerMX /
или
(http://forums.webscript.ru/images/vb_bullet.gif) Forum Webscript.Ru > Программирование > PHP > хлебные крошки
-
Breadcrumbs - Хлебные крошки. Их так америкосы называют. По "принципу" мальчика-спальчика, который кидал хлебные крошки, чтобы запомнить путь домой.
http://www.macromedia.com/devnet/mx/dreamweaver/articles/breadcrumbs.html
-
Yukko
Ок, понял. Я это спокойно делал уже как год, а люди обозвали это "крошками" и обсуждают :D
Если серьезно - "система навигации" больше подходит, как мне кажется.
Спасибо.
-
Читал статью предложеную cosss
Не понимаю, зачем советовать то, что у самих не используется :(
Код на РНР надо серьезно править перед использованием. И вообще это бред, делать иерархию папок с такими названиями, которые хочешь, чтобы были видны на странице. Хотя ресурс и серьезный, но сложилось такое ощущение, что статью выкинули в онлайн даже без проверки и вычитки.
-
Yukko
Ну дрим только для верстки хорош, на остальное можно вообще не обращать внимания...
-
все смешалось в доме облонских. поехали во флейм