Многодоменная cms

pilot911

Новичок
Многодоменная cms

Как спроектировать для CMS, построенной на дереве страниц ?
 

Активист

Активист
Команда форума
pilot911
Очень легко.

Для этого нужна система с ЧПУ, где адреса вида
http://mycms.ru/eng/pages/about/contacts.html

Где, eng - язык.
Язык - это функциональный набор, позволяющий получать текущий язык, который учитывается при добавление/редактирование/выборки любых данных.

В htaccess для всех доменов (все домены - алиасы одного хоста) использовать реврайт кондитион, который в случае находжения домена в правилах, "переадресовывает" на нужный язык.
В ссылках убрать язык.

Как спроектировать - зависит от тебя :)

ЗЫ: у меня реализовано именно так. Разжёвывать не умею, не судите строго)
 

dimagolov

Новичок
pilot911
объясни как заголовок соотносится с вопросом?
Что такое "Многодоменная cms"?
и что такое "CMS, построенной на дереве страниц"?
 

pilot911

Новичок
Автор оригинала: HraKK
table_page
idDomain idParent idPage

еще вопросы?
я тоже за отдельную таблицу для доменов


но проблема в производительности - один урл (ru/politic/) может принадлежать двум страницам (двум разным доменам) и эти страницы могут быть грубокой вложенности в дереве

как в таком случае лучше задать им принадлежность к домену (для быстрого поиска) ?

я вижу лишь один выход - при назначении домена какой-то странице создавать php файл, в который прописывать массивы для всех вложенных страниц:

$URL[domain][page_id] = 'ru/politic';


как вам кажется такая идея ?

-~{}~ 12.12.08 21:10:

Автор оригинала: Активист
pilot911
Очень легко.

Для этого нужна система с ЧПУ, где адреса вида
http://mycms.ru/eng/pages/about/contacts.html

Где, eng - язык.
Язык - это функциональный набор, позволяющий получать текущий язык, который учитывается при добавление/редактирование/выборки любых данных.

В htaccess для всех доменов (все домены - алиасы одного хоста) использовать реврайт кондитион, который в случае находжения домена в правилах, "переадресовывает" на нужный язык.
В ссылках убрать язык.

Как спроектировать - зависит от тебя :)

ЗЫ: у меня реализовано именно так. Разжёвывать не умею, не судите строго)
а как быть в случае, если две страницы имеют одинаковый урл, но принадлежат разным доменам ?
 

HraKK

Мудак
Команда форума
а как быть в случае, если две страницы имеют одинаковый урл, но принадлежат разным доменам ?
при ключах нормальных скорость будет приемлемой. Если надо более быстрые выборки - idDomail left - right - Nested Set.
Еще вопросы?
Если уж у тебя 20000+ сайтов и критична скорость, то мля не ***моск, и ставь отдельную базу для них.
 

pilot911

Новичок
Автор оригинала: HraKK
при ключах нормальных скорость будет приемлемой. Если надо более быстрые выборки - idDomail left - right - Nested Set.
Еще вопросы?
Если уж у тебя 20000+ сайтов и критична скорость, то мля не ***моск, и ставь отдельную базу для них.
да нет, мы о разных вещах говорим

представь, в дереве страниц 3 корня, от которых идут ветви для 3х доменов


где-то на 3м уровне вложенности у нас есть страница с url "ru/politic", причем такая страница есть во всех ветвях...

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


мне кажется, без заранее составленного кэша тут никак не обойтись
 

dimagolov

Новичок
pilot911, скажи, у тебя твоя "страница с url "ru/politic"" должна быть общей для всех доменов или уникальной для каждого из них?
 

pilot911

Новичок
Автор оригинала: dimagolov
pilot911, скажи, у тебя твоя "страница с url "ru/politic"" должна быть общей для всех доменов или уникальной для каждого из них?
должна быть уникальной для каждого домена по контенту, дизайну и тп

-~{}~ 12.12.08 22:23:

Автор оригинала: kirill538
а отдельную базу на каждый домен завести не судьба ?
наоборот, от этого я пытаюсь уйти по той причине, что хостеры ограничивают количество баз данных обычно 4-5ю
 

fixxxer

К.О.
Партнер клуба
да плевать давно пора на шаред хостинг при нынешних ценах на vps
 

dimagolov

Новичок
pilot911, ну добавь ко всем таблицам DomainID, по $SERVER['host'] определяй в самом начале (хоть из базы, хоть из конфига) DomainID и включай его во все запросы. Понятно, что DomainID надо будет включить в индексы, по которым будет вестись поиск.
 

pilot911

Новичок
остановился на создании cache файла для списка доменов и подчиненными страницами внутри
PHP:
if($domain=$from_db['domain']/*domain1.ru*/) {


     if($GLOBALS["ROUTER"]->addRoute("1", new cmf_request_route(
							":language", array()))) {}
     else if($GLOBALS["ROUTER"]->addRoute("2", new cmf_request_route(
							":language", array()))) {}

} elseif($domain=$from_db['domain']/*domain2.ru*/){


     if($GLOBALS["ROUTER"]->addRoute("5", new cmf_request_route(
							":language", array()))) {}
     else if($GLOBALS["ROUTER"]->addRoute("7", new cmf_request_route(
							":language", array()))) {}

}
 
Сверху