|
|
|
| Сейчас переписываю код отвественный за вывод страниц на сайте, в связи с этим поплыли ссылки. Собственно, закралось подозрение: достаточно ли удачный алгоритм я выбрал и не придется ли при следующей модернизации снова править все ссылки?
Решил посоветоваться с народом:)
Сейчас у меня структура следующая:
есть карта сайта которая содержится в массиве (напр. $menu), который подключается к файлу index.php. Из этого массива беруться названия страниц, названия подключаемых файлов и пр.
На сайте несколько статичных разделов (главная, гостевая и пр) и один динамический - статьи. Трудность в том, что в динамическом выводятся ссылки на предыдущую и следующую статью. Таким образом, все элементы $menu вплоть то i-того элемента считаются статическими, а в формировании нижнего меню учавствуют только элементы начиная с i+1.
Сложность появилась когда возник еще один динамический раздел. Я ввел дополнительную переменную, которая позволяет идентифицировать принадлежность раздела и, в зависимости от этого, подключить нужную карту сайта. Но что произойдет если я захочу добавить еще один статический раздел - подумать страшно:)
В общем, чувствую что система моя круто путанная. Поэтому, хотелось бы конструктивной ее критики, идей по модернизации, а так же описаний провереных и хорошо себя зарекомендовавших структур.
Если совсем непонятно, то можно взглянуть прямо на сайте: | |
|
|
|
|
|
|
|
для: Loki
(26.07.2005 в 13:28)
| | Если честно то не очень понятно...
PS Кстати, новая система статистики ключевых слов прекрасно прижалась на www.softtime.ru. Как отправлю последнии главы по MySQL 5 в BHV займусь счётчиком в плотную. | |
|
|
|
|
|
|
|
для: cheops
(26.07.2005 в 18:52)
| | >Если честно то не очень понятно...
Ну на самом деле вопрос можно упростить: для каждого конкретного сайта структура разрабыатывается отдельно, или адаптируется какая-то типовая? Если второе, то какие наиболее распространены? (напр, когда index.php передается переменная, а он, в зависимости от переменной, показывает нужную страницу. Или для кадой страницы своя папка, или еще как).
В общем, хочется узнать о набитых уже шишках, чтобы не изобретать велосипед. | |
|
|
|
|
|
|
|
для: Loki
(26.07.2005 в 23:52)
| | Мы стараемся под каждое Web-приложение создать отдельную директорию, но таким образом, чтобы сайт спускался от корня только на один уровень. Каждое Web-приложение состоит из блока представления и блока администрирования. Таким образом, сайт состоит из блоков и может собираться как конструктур. Правда систему навигации каждый раз приходится делать по-новой, но она как правило завязана на дизайн, поэтому она создаётся с учётом дизайна сайта. | |
|
|
|
|
|
|
|
для: cheops
(27.07.2005 в 12:14)
| | Я имел ввиду не саму навигацию, и "конструкцию" сайта. Если мы делаем голый хтмл, то все ясно: страницы и в них ссылки друг на друга. Делая сайт на php, мы можем эту структуру сколь угодно усложнять. Вот это меня собственно и интересует.
По поводу папок: а если имеются несколько разделов, идентичных по коду, но различных по содержанию: все равно раскидываете их в разные папки? Или просто вводите ключик, который указывает какую информацию в данном случае выводить? | |
|
|
|
|
|
|
|
для: Loki
(27.07.2005 в 12:32)
| | Если код отлажен и его изменение не желательно, мы предпочитаем создать новую директорию - если код создаётся с нуля, то конечно воспользуемся флагом или анализуруем нельзя ли создать что-нибудь более универсальное. | |
|
|
|
|
|
|
|
для: Loki
(26.07.2005 в 13:28)
| | Выработанная горьким опытом структыра сайта:
index.php - полько служебные функции как о запрет кэширования, соединение с базой MySQL и так далее. Одним словом служебные, сервисные функции.
далее. сущетвует одна единственная переменная, которая отвечает за то какой модуль будет грузиться (в твоём случае это "карта". лучше используй слово "модуль", так приятнее и понятнее). А вот уже в файле в модулем твори что хочешь, с одним условием: не трож переменную которая влияет на выбор модуля.
Ещё совет в том, что елси нужно получить какой-то локализованый результат, лучше использовать функции. При томже эффекте можно хоть в миллиарде функций юзеть одинаковые переменные. То что внутри вынкции так внутри неё и останется, елси переменные не вернуть через return. Хотя и в этом случае ты можешь задавать по желанию названия переменных. Если у тебя не трёх ярусные массывы используются, могу порекомендовать юзать такие уловки как все переменные одного модуля называть уникальным для одуля именем. Ты про это кстати писал, только криво это реализовал.
Зачем вводить статичные $a,$b,$c, елси можно сделать $myVar[$module][любая переменная модуля].
Ещё можно называть переменные по разному скажем для срвисных целей использовать например $имяПеременной, а для остальных $имя_переменной
Способов куча. Динамические предпочтительнее. | |
|
|
|
|
|
|
|
для: [CHOL]Scorpion
(26.07.2005 в 22:38)
| | Короче, как я понимаю, самое оптимальное, использовать для горизонтальной (разделы) и вертикальной (статьи) навигации отдельные переменные?в этом случае все получается достаточно структурировано и прозрачно... Надо будет попробовать их передавать через сессии, а то слишком много информации надо гонять через адресную строку:) | |
|
|
|
|
|
|
|
для: Loki
(26.07.2005 в 23:45)
| | Да, когда накапливается много параметров - их лучше засовывать в сессии, только с ними связан неприятный момент - при заполнении HTML-формы с обработчиком в отдельном файле при возврате back (например, если ошибка в данных) при использовании сессий данные в HTML-форме обнуляются, а без них сохраняются. Поэтому если это критично нужно будет позаботится о занесении в сессии значений из формы. | |
|
|
|
|
|
|
|
для: cheops
(27.07.2005 в 12:08)
| | Для возврата данных, если что то в форму введено не верно можно поступить по простому, можно не форвардить через header обратно, можно ввести флаг, например $error, елси функция записи возвращает $error === True, то инклудится форма, которая была на предыдущей странице. а в самой форме в значении полей писать просто If (IsSet(переменная) && !Empty(переменная)){ echo "переменная";} | |
|
|
|
|
|
|
|
для: [CHOL]Scorpion
(27.07.2005 в 12:40)
| | Это актуально для рефреша страницы, а cheops, как я понял, говорил о history.back | |
|
|
|
|
|
|
|
для: Loki
(27.07.2005 в 13:03)
| | Мда, ты прав.
Кстати с этим можно смириться, всётаки динамические страницы, это динамические страницы.Или как предложили, эзать сессии. | |
|
|
|