![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Pokoinik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 17.3.2007 Где: /dev/null Репутация: нет Всего: 3 |
Столкнулся с проблемой.
Сайт состоит из страниц (неформализованный текст), а также дополнительных модулей типа новости, галерея etc. притом дополнительные модули могут находится на любом уровне вложенности сайт/раздел/подраздел/галерея или сайт/раздел/новости Как лучше организовать хранение информации в бд + как лучше сделать разбор урла? -------------------- ICQ: 490-993 Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!! Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают. Делай или не делай! Никаких попробую! Йода (Yoda), мастер-джедай |
|||
|
||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: нет Всего: 26 |
Pokoinik, таблица разделов/категорий с неограниченным уровнем вложенности через id и parent_id.
|
|||
|
||||
| Pokoinik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 17.3.2007 Где: /dev/null Репутация: нет Всего: 3 |
Я думаю реализовать следующее:
в цмс не использовать модреврайт, а потом дописать расширение которое будет рендерить ссылки вида index.php?component=news&id=10 в /news/2007/event/ Добавлено через 1 минуту и 43 секунды + а в бд хранить полное дерево сайта, с указанием того какой компонент где лежит -------------------- ICQ: 490-993 Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!! Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают. Делай или не делай! Никаких попробую! Йода (Yoda), мастер-джедай |
|||
|
||||
| ViniPuh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 24.8.2007 Репутация: нет Всего: 1 |
Я год назад столкнулся с такой же проблемой.
При ее решеии пришел к следующему варианту: - использую мод rewrite, что бы перехватить обращение к файлам и разделам сайта и обработать их с помощью одного скрипта (в принципе его можно и не использовать, если перехватыват запросы чем то другим); - использую таблицу БД, в которой храняться правила для сайта path - путь на который распространяется правило fmask - файл или шаблон имени файла на которые распространяется правило type - тип правила (че оно делает) и в нагрузку 2 числовых и 2 строковых параметра; - адрес запроса по той таблице проверяется поэтапно начиная с корня, а затем добавляя по каталогу пути приходим к конечному адресу; - правила вышестоящих разделов могут наследоваться вложенными. В итоге получил следующие приимущества: - сайт может иметь произвольную очень структуру; - может быть супер многомодульным; - если для модуля правила определены в таблице, то реальный файл адреса может вообще отсутствовать; - в файлах с информацией можно хранить только реальный контент, а все оформление и панельки приобращении к файлу может пришивать скрипт ядра; - если сам контент определить в отдельную папку и правильно настроить сервер на доступ только к ней, конечному пользователю будет очень трудно "уранить" такой сайт, испортить контент пожалуйста, а вот повредить само ядро сложновато. |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: нет Всего: 31 |
Безусловно
А дальше в пхп разбирать $_GET. Все остальное пихать в $_POST Хранение в базе? Все просто: OWNER, SUBOWNER ... Т.е. ID ближайшего родителя и ID самого первого. |
|||
|
||||
| scuter |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 13.6.2008 Репутация: нет Всего: 1 |
я видел различные CMS и в них люди по разному решают такую задачу, кто то делает поле альтернативный адрес + rewrite, кто то делает сложную структуру с вложениями, а некоторые отдельные личности делают CMS на файлах. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Советую посмотреть реализацию роутера от Zend'а: Zend/Controller/Router.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| maxbrown |
|
|||
![]() Новичок Профиль Группа: Awaiting Authorisation Сообщений: 26 Регистрация: 16.6.2008 Где: Obninsk sci-city Репутация: нет Всего: нет |
Дерево с генерацией type-in адресов типа site.com/razdel/podrazdel/galereya.htm , однозначно.
Саму галерею (или какой там ещё внешний скрипт) вызывать спец.вставкой в код требуемого узла дерева. Например, у меня в LiveTree ( http://Wgent.com/LIVETREE.htm ) в коде может присутствовать множество макровставок, таких, как {URL:раздел/подраздел/галерея}, {LIST:раздел/тип_подраздела} и, в частности, {SCRIPT:path/gallery.php?parameter1=value1¶meter2=value2&etc} Пришлось, конечно, немножко повозиться с ob_get_contents(), с глобальными переменными типа $HTTP_GET_VARS, $_SESSION, до сих пор не решил проблему с getenv("SCRIPT_NAME"), но зато теперь почти любой чужой скрипт включаю в дерево одной строчкой (плюс правкой его конфигов в плане полного изничтожения шапки и переделки темплейтов) Это сообщение отредактировал(а) maxbrown - 16.6.2008, 11:49 |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Что за атавизмы Вы используете?! А константа __FILE__ не годится? -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| maxbrown |
|
||||
![]() Новичок Профиль Группа: Awaiting Authorisation Сообщений: 26 Регистрация: 16.6.2008 Где: Obninsk sci-city Репутация: нет Всего: нет |
P.S. Вызываемый скрипт - чужой, огромный и заранее не известный. Это сообщение отредактировал(а) maxbrown - 17.6.2008, 02:03 |
||||
|
|||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
maxbrown, а, понятно. Работаем с черным ящиком?
Я бы, по правде говоря, посоветовал включить STRICT режим, отключить совместимость с ZE1 и запретить олдовые супермассивы. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |