Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Типовые структуры навигации
 
 автор: Loki   (26.07.2005 в 13:28)   письмо автору
 
 

Сейчас переписываю код отвественный за вывод страниц на сайте, в связи с этим поплыли ссылки. Собственно, закралось подозрение: достаточно ли удачный алгоритм я выбрал и не придется ли при следующей модернизации снова править все ссылки?
Решил посоветоваться с народом:)
Сейчас у меня структура следующая:
есть карта сайта которая содержится в массиве (напр. $menu), который подключается к файлу index.php. Из этого массива беруться названия страниц, названия подключаемых файлов и пр.
На сайте несколько статичных разделов (главная, гостевая и пр) и один динамический - статьи. Трудность в том, что в динамическом выводятся ссылки на предыдущую и следующую статью. Таким образом, все элементы $menu вплоть то i-того элемента считаются статическими, а в формировании нижнего меню учавствуют только элементы начиная с i+1.
Сложность появилась когда возник еще один динамический раздел. Я ввел дополнительную переменную, которая позволяет идентифицировать принадлежность раздела и, в зависимости от этого, подключить нужную карту сайта. Но что произойдет если я захочу добавить еще один статический раздел - подумать страшно:)
В общем, чувствую что система моя круто путанная. Поэтому, хотелось бы конструктивной ее критики, идей по модернизации, а так же описаний провереных и хорошо себя зарекомендовавших структур.
Если совсем непонятно, то можно взглянуть прямо на сайте:

   
 
 автор: cheops   (26.07.2005 в 18:52)   письмо автору
 
   для: Loki   (26.07.2005 в 13:28)
 

Если честно то не очень понятно...

PS Кстати, новая система статистики ключевых слов прекрасно прижалась на www.softtime.ru. Как отправлю последнии главы по MySQL 5 в BHV займусь счётчиком в плотную.

   
 
 автор: Loki   (26.07.2005 в 23:52)   письмо автору
 
   для: cheops   (26.07.2005 в 18:52)
 

>Если честно то не очень понятно...
Ну на самом деле вопрос можно упростить: для каждого конкретного сайта структура разрабыатывается отдельно, или адаптируется какая-то типовая? Если второе, то какие наиболее распространены? (напр, когда index.php передается переменная, а он, в зависимости от переменной, показывает нужную страницу. Или для кадой страницы своя папка, или еще как).
В общем, хочется узнать о набитых уже шишках, чтобы не изобретать велосипед.

   
 
 автор: cheops   (27.07.2005 в 12:14)   письмо автору
 
   для: Loki   (26.07.2005 в 23:52)
 

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

   
 
 автор: Loki   (27.07.2005 в 12:32)   письмо автору
 
   для: cheops   (27.07.2005 в 12:14)
 

Я имел ввиду не саму навигацию, и "конструкцию" сайта. Если мы делаем голый хтмл, то все ясно: страницы и в них ссылки друг на друга. Делая сайт на php, мы можем эту структуру сколь угодно усложнять. Вот это меня собственно и интересует.
По поводу папок: а если имеются несколько разделов, идентичных по коду, но различных по содержанию: все равно раскидываете их в разные папки? Или просто вводите ключик, который указывает какую информацию в данном случае выводить?

   
 
 автор: cheops   (27.07.2005 в 12:56)   письмо автору
 
   для: Loki   (27.07.2005 в 12:32)
 

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

   
 
 автор: [CHOL]Scorpion   (26.07.2005 в 22:38)   письмо автору
 
   для: Loki   (26.07.2005 в 13:28)
 

Выработанная горьким опытом структыра сайта:

index.php - полько служебные функции как о запрет кэширования, соединение с базой MySQL и так далее. Одним словом служебные, сервисные функции.

далее. сущетвует одна единственная переменная, которая отвечает за то какой модуль будет грузиться (в твоём случае это "карта". лучше используй слово "модуль", так приятнее и понятнее). А вот уже в файле в модулем твори что хочешь, с одним условием: не трож переменную которая влияет на выбор модуля.

Ещё совет в том, что елси нужно получить какой-то локализованый результат, лучше использовать функции. При томже эффекте можно хоть в миллиарде функций юзеть одинаковые переменные. То что внутри вынкции так внутри неё и останется, елси переменные не вернуть через return. Хотя и в этом случае ты можешь задавать по желанию названия переменных. Если у тебя не трёх ярусные массывы используются, могу порекомендовать юзать такие уловки как все переменные одного модуля называть уникальным для одуля именем. Ты про это кстати писал, только криво это реализовал.
Зачем вводить статичные $a,$b,$c, елси можно сделать $myVar[$module][любая переменная модуля].

Ещё можно называть переменные по разному скажем для срвисных целей использовать например $имяПеременной, а для остальных $имя_переменной

Способов куча. Динамические предпочтительнее.

   
 
 автор: Loki   (26.07.2005 в 23:45)   письмо автору
 
   для: [CHOL]Scorpion   (26.07.2005 в 22:38)
 

Короче, как я понимаю, самое оптимальное, использовать для горизонтальной (разделы) и вертикальной (статьи) навигации отдельные переменные?в этом случае все получается достаточно структурировано и прозрачно... Надо будет попробовать их передавать через сессии, а то слишком много информации надо гонять через адресную строку:)

   
 
 автор: cheops   (27.07.2005 в 12:08)   письмо автору
 
   для: Loki   (26.07.2005 в 23:45)
 

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

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 12:40)   письмо автору
 
   для: cheops   (27.07.2005 в 12:08)
 

Для возврата данных, если что то в форму введено не верно можно поступить по простому, можно не форвардить через header обратно, можно ввести флаг, например $error, елси функция записи возвращает $error === True, то инклудится форма, которая была на предыдущей странице. а в самой форме в значении полей писать просто If (IsSet(переменная) && !Empty(переменная)){ echo "переменная";}

   
 
 автор: Loki   (27.07.2005 в 13:03)   письмо автору
 
   для: [CHOL]Scorpion   (27.07.2005 в 12:40)
 

Это актуально для рефреша страницы, а cheops, как я понял, говорил о history.back

   
 
 автор: [CHOL]Scorpion   (27.07.2005 в 13:08)   письмо автору
 
   для: Loki   (27.07.2005 в 13:03)
 

Мда, ты прав.


Кстати с этим можно смириться, всётаки динамические страницы, это динамические страницы.Или как предложили, эзать сессии.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования