Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Как сделать навигацию по сайту

#1 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0
0

Отправлено 19 Июль 2009 - 12:09

Например как на этом форуме "Форум для вебмастеров > Веб-технологии и программирование > PHP"

На сайте это примерно так должно выглядеть "Главная > Контакты"

как такое вообще сделать?

 

 

  • 0

#2 rds

rds
  • Пользователь
  • 33 сообщений
  • Репутация: 0

Отправлено 20 Июль 2009 - 09:43

Типо "Карта сайта" ?
  • 0

#3 Евгений

Евгений
    Topic Starter
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 20 Июль 2009 - 09:46

нет.

Например как на этом форуме "Форум для вебмастеров > Веб-технологии и программирование > PHP"


эта строчка показывает в каком подразделе и разделе, и форуме находится пользователь :)
  • 0

#4 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 20 Июль 2009 - 18:17

Ну все зависит от дизайна архитектуры.

Самое просто можно, что то вроде такого:
<?php
class Navigator
{
private $links = array();
public addLink($title, $href) {
$links[] = array('title' => $title, 'href' => $href);
}
public getNavigation($separator = " >> ") {
$nav = "";
for (int i = 0; i < count($links); i++) {
$nav .= '<a href="'. $links[i]['href'] .'">'. $links[i]['href'] .'</a>';
if (i != count($links) - 1)
{
$nav .= $separator;
}
}
}
}
?>

Далее так:
index.php:
<?php
....
$nav = new Navigator();
$nav.addLink('Главная', 'index.php');
....
?>

модуль.php
<?php
if ($_GET['action'] == 'add') {
$nav.addLink('Добавить что-то', 'add.php');
}
else if ($_GET['action'] == 'edit') {
$nav.addLink('Редактировать что-то', 'edit.php');
}
?>


Код писал тут и не проверял
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 20 Июль 2009 - 21:21

Вообщем-то это навигация по сайту.

v1ex, написать свой класс это конечно здорово. Твой пример конечно наглядный, но архитектуры как таковой в ней нет. И ещё одна большая проблема. Обычно навигацией занимается ядро ресурса и не нужно перекладывать создание навигации на интерфейс пользователя. Это нарушает принцип инкапсуляции! За навигацией должна следить система, а не пользовательский интерфейс, это должны быть скрытые методы, выполняющиеся внутри класса при создании объекта или его использовании.
  • 0

#6 v1ex

v1ex
  • Пользователь
  • 225 сообщений
  • Репутация: 0

Отправлено 21 Июль 2009 - 05:38

ZiTosS, естественно, просто не писать же мне тут ядро для примера :)
  • 0

#7 Евгений

Евгений
    Topic Starter
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 08 Август 2009 - 00:29

v1ex, код пока что не проверял, но сейчас попытался вникнуть в него (не хочу копировать код, хочу понять как это работает).
Получается, когда пользователь заходит на главную страницу в массив заноситься первая ссылка "Главная", потом допустим если пользователь нажал на "добавить что-то" запишется в массив еще одна ссылка. и выведется так
Главная >> Добавить что-то.

А если юзер опять перейдет на главную страницу? Получиться Главная >> Добавить что-то >> Главная :) ну да ладно, думаю это можно как-нибудь решить.

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

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Август 2009 - 12:41

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

Евгений,

v1ex, код пока что не проверял, но сейчас попытался вникнуть в него (не хочу копировать код, хочу понять как это работает).
Получается, когда пользователь заходит на главную страницу в массив заноситься первая ссылка "Главная", потом допустим если пользователь нажал на "добавить что-то" запишется в массив еще одна ссылка. и выведется так
Главная >> Добавить что-то.

А если юзер опять перейдет на главную страницу? Получиться Главная >> Добавить что-то >> Главная ну да ладно, думаю это можно как-нибудь решить.

Ты не прав. После каждой перезагрузки страницы навигатор пересобирается заново и цепочка выстраивается заново. Поэтому если $_GET['action'] != 'add' или вообще не существует, то пункта связанного не добавится.

Кстати посмотрел метод getNavigation (вернуть навигацию) и не нашёл в ней строчки return, нужно будет добавить.

По поводу моей идеи... Всё зависит от возможностей движка. А так данного класса почти достаточно для создания удобного навигационного меню, главное не забывать что оно у тебя есть. Так как формировать его придётся по всей собираемой программе.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru