Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проектирование cms, как лучше? 
:(
    Опции темы
Pokoinik
Дата 24.10.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: нет
Всего: 3



Столкнулся с проблемой.

Сайт состоит из страниц (неформализованный текст), а также дополнительных модулей типа новости, галерея etc.
притом дополнительные модули могут находится на любом уровне вложенности
сайт/раздел/подраздел/галерея
или
сайт/раздел/новости

Как лучше организовать хранение информации в бд + как лучше сделать разбор урла?




--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
dsCode
Дата 25.10.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



Pokoinik, таблица разделов/категорий с неограниченным уровнем вложенности через id и parent_id.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Pokoinik
Дата 25.10.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: нет
Всего: 3



Я думаю реализовать следующее:
в цмс не использовать модреврайт,
а потом дописать расширение которое будет рендерить ссылки вида
index.php?component=news&id=10 в /news/2007/event/

Добавлено через 1 минуту и 43 секунды
+ а в бд хранить полное дерево сайта, с указанием того какой компонент где лежит


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
ViniPuh
Дата 25.10.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 24.8.2007

Репутация: нет
Всего: 1



Я год назад столкнулся с такой же проблемой.
При ее решеии пришел к следующему варианту:
- использую мод rewrite, что бы перехватить обращение к файлам и разделам сайта и обработать их с помощью одного скрипта (в принципе его можно и не использовать, если перехватыват запросы чем то другим);
- использую таблицу БД, в которой храняться правила для сайта
    path - путь на который распространяется правило
    fmask - файл или шаблон имени файла на которые распространяется правило
    type - тип правила (че оно делает)
    и в нагрузку 2 числовых и 2 строковых параметра;
- адрес запроса по той таблице проверяется поэтапно начиная с корня, а затем добавляя по каталогу пути приходим к конечному адресу;
- правила вышестоящих разделов могут наследоваться вложенными.

В итоге получил следующие приимущества:
- сайт может иметь произвольную очень структуру;
- может быть супер многомодульным;
- если для модуля правила определены в таблице, то реальный файл адреса может вообще отсутствовать;
- в файлах с информацией можно хранить только реальный контент, а все оформление и панельки приобращении к файлу может пришивать скрипт ядра;
- если сам контент определить в отдельную папку и правильно настроить сервер на доступ только к ней, конечному пользователю будет очень трудно "уранить" такой сайт, испортить контент пожалуйста, а вот повредить само ядро сложновато.
PM MAIL ICQ   Вверх
awers
Дата 29.10.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



Безусловно 

Код

RewriteEngine on
Options +FollowSymlinks

RewriteCond %{REQUEST_URI} !\.(js|css|txt|inc|incx|gif|jpg)
RewriteRule ^(.*)$ index.php?$1  [L,QSA]


А дальше в пхп разбирать $_GET. Все остальное пихать в $_POST
Хранение в базе? Все просто: OWNER, SUBOWNER ... Т.е. ID ближайшего родителя и ID самого первого.
PM MAIL WWW ICQ Skype   Вверх
scuter
Дата 13.6.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.6.2008

Репутация: нет
Всего: 1



Цитата

Как лучше организовать хранение информации в бд + как лучше сделать разбор урла?

я видел различные CMS и в них люди по разному решают такую задачу,
кто то делает поле альтернативный адрес + rewrite,
кто то делает сложную структуру с вложениями,
а некоторые отдельные личности делают CMS на файлах.
PM MAIL   Вверх
IZ@TOP
Дата 14.6.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Советую посмотреть реализацию роутера от Zend'а: Zend/Controller/Router.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
maxbrown
Дата 16.6.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: 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&parameter2=value2&etc}
Пришлось, конечно, немножко повозиться с ob_get_contents(), с глобальными переменными типа $HTTP_GET_VARS, $_SESSION, до сих пор не решил проблему с getenv("SCRIPT_NAME"), но зато теперь почти любой чужой скрипт включаю в дерево одной строчкой (плюс правкой его конфигов в плане полного изничтожения шапки и переделки темплейтов)  smile

Это сообщение отредактировал(а) maxbrown - 16.6.2008, 11:49
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 16.6.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(maxbrown @  16.6.2008,  12:37 Найти цитируемый пост)
 $HTTP_GET_VARS

Что за атавизмы Вы используете?!


Цитата(maxbrown @  16.6.2008,  12:37 Найти цитируемый пост)
getenv("SCRIPT_NAME")

А константа __FILE__ не годится?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
maxbrown
Дата 17.6.2008, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 26
Регистрация: 16.6.2008
Где: Obninsk sci-city

Репутация: нет
Всего: нет



Цитата(IZ@TOP @ 16.6.2008,  16:27)
Цитата(maxbrown @  16.6.2008,  12:37 Найти цитируемый пост)
 $HTTP_GET_VARS
Что за атавизмы Вы используете?!
Это не я атавизмы использую. Это вызываемый скрипт может их использовать.

Цитата(IZ@TOP @ 16.6.2008,  16:27)
Цитата(maxbrown @  16.6.2008,  12:37 Найти цитируемый пост)
getenv("SCRIPT_NAME")
А константа __FILE__ не годится?
Это не я getenv("SCRIPT_NAME") вместо __FILE__ использую. Это вызываемый скрипт может её использовать в лучшем случае (в худшем он поюзает таки-константу __FILE__, и тогда дело вообще труба.)

P.S. Вызываемый скрипт - чужой, огромный и заранее не известный.

Это сообщение отредактировал(а) maxbrown - 17.6.2008, 02:03
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 17.6.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



maxbrown, а, понятно. Работаем с черным ящиком?
Я бы, по правде говоря, посоветовал включить STRICT режим, отключить совместимость с ZE1 и запретить олдовые супермассивы.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.2876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.