jPortal multisites
11 July 2008
Comments
Gdy mamy porządne konto z możliwością tworzenia subdomen i zamierzamy stworzyć zbiór portali opartych o jPortal nie musimy wcale wrzucać kilkunastu zestawów CMSa. Możemy wykorzystać zmienną $SERVER_NAME przechowującą nazwę subdomeny. Na początek zróbmy test. Stwórz plik test.php z taką zawartością:<?php
< ? php
echo "$SERVER_NAME";
? >
Aliasy typu prv.pl to nie domeny/subdomeny! Wrzuć go na serwer i otwórz go za pomocą każdej z subdomen. Za każdym razem powinna pojawić się inna nazwa. Np. dla www.cms.riklaunim.ekonto.net pojawi się cms.riklaunim.ekonto.net. Gdy już wszystko działa zainstaluj na koncie 1 jPortal. Dla celów porządkowych zainstaluj z prefixem "main". Następnie dokonaj drobnych zmian typu skórka, moduły używane we wszystkich (lub większości) portalach itp. Następnie wykonaj kopię bazy danych. Następnie zmieniaj prefix (zamień wszystko w WordPadzie) na inny w zależności od nazwy konkretnego portala. Każdą kopie bazy wrzucamy za pomocą phpMyAdmina. Np. mamy zrobić portale o chlebie, cukierkach i ciastach. Wrzucamy do bazy 3 kopie o prefixach powiedzmy "chleb", "cukier" i "ciacho". Teraz edytujemy config.php jPortala. Około linii 82 mamy nazwy tabel i prefix do nich.
<?php
$prefix = 'main';
$user_tbl = $prefix.'admins';
$menu_tbl = $prefix.'menu';
$info_tbl = $prefix.'infopages';
$news_tbl = $prefix.'news';
$art_tbl = $prefix.'articles';
$php_tbl = $prefix.'scripts';
$file_a_tbl = $prefix.'file_categories';
$file_b_tbl = $prefix.'file_data';
$comm_tbl = $prefix.'comments';
$forum_a = $prefix.'forum_a';
$forum_b = $prefix.'forum_b';
$forum_c = $prefix.'forum_c';
$links_a_tbl = $prefix.'links_categories';
$links_b_tbl = $prefix.'links_data';
$poll_a_tbl = $prefix.'poll_desc';
$poll_b_tbl = $prefix.'poll_data';
$bann_a_tbl = $prefix.'banners';
$bann_b_tbl = $prefix.'banners_info';
$topic_tbl = $prefix.'topic';
$mail_tbl = $prefix.'mails';
$gbook_tbl = $prefix.'gbook';
$guest_tbl = $prefix.'users';
$pw_tbl = $prefix.'pw';
$ban_tbl = $prefix.'ban';
$sources_tbl = $prefix.'sources';
- kopiujemy ten zestaw X razy, gdzie X to liczba portali, które mamy stworzyć.
- cały ten powyższy kod będę na razie oznaczał jako [Dane bazy]
- piszemy taki kod:
<?php
If ($SERVER_NAME=="domena.glowna.pl")
{
$prefix = 'main';
[Dane bazy]
}
elseif ($SERVER_NAME=="subdomena1.pl")
{
$prefix = 'prefix1';
[Dane bazy]
}
elseif ($SERVER_NAME=="subdomena2.pl")
{
$prefix = 'prefix2';
[Dane bazy]
}
elseif ($SERVER_NAME=="subdomena3.pl")
{
$prefix = 'prefix3';
[Dane bazy]
}
.... itd.
else
{
$prefix = 'prefixX';
[Dane bazy]
}
<?php
If ($SERVER_NAME=="domena.glowna.pl")
{
$prefix = 'main';
$user_tbl = $prefix.'admins';
$menu_tbl = $prefix.'menu';
$info_tbl = $prefix.'infopages';
$news_tbl = $prefix.'news';
$art_tbl = $prefix.'articles';
$php_tbl = $prefix.'scripts';
$file_a_tbl = $prefix.'file_categories';
$file_b_tbl = $prefix.'file_data';
$comm_tbl = $prefix.'comments';
$forum_a = $prefix.'forum_a';
$forum_b = $prefix.'forum_b';
$forum_c = $prefix.'forum_c';
$links_a_tbl = $prefix.'links_categories';
$links_b_tbl = $prefix.'links_data';
$poll_a_tbl = $prefix.'poll_desc';
$poll_b_tbl = $prefix.'poll_data';
$bann_a_tbl = $prefix.'banners';
$bann_b_tbl = $prefix.'banners_info';
$topic_tbl = $prefix.'topic';
$mail_tbl = $prefix.'mails';
$gbook_tbl = $prefix.'gbook';
$guest_tbl = $prefix.'users';
$pw_tbl = $prefix.'pw';
$ban_tbl = $prefix.'ban';
$sources_tbl = $prefix.'sources';
}
elseif ($SERVER_NAME=="subdomena1")
{
$prefix = 'sub1';
$user_tbl = $prefix.'admins';
$menu_tbl = $prefix.'menu';
$info_tbl = $prefix.'infopages';
$news_tbl = $prefix.'news';
$art_tbl = $prefix.'articles';
$php_tbl = $prefix.'scripts';
$file_a_tbl = $prefix.'file_categories';
$file_b_tbl = $prefix.'file_data';
$comm_tbl = $prefix.'comments';
$forum_a = $prefix.'forum_a';
$forum_b = $prefix.'forum_b';
$forum_c = $prefix.'forum_c';
$links_a_tbl = $prefix.'links_categories';
$links_b_tbl = $prefix.'links_data';
$poll_a_tbl = $prefix.'poll_desc';
$poll_b_tbl = $prefix.'poll_data';
$bann_a_tbl = $prefix.'banners';
$bann_b_tbl = $prefix.'banners_info';
$topic_tbl = $prefix.'topic';
$mail_tbl = $prefix.'mails';
$gbook_tbl = $prefix.'gbook';
$guest_tbl = $prefix.'users';
$pw_tbl = $prefix.'pw';
$ban_tbl = $prefix.'ban';
$sources_tbl = $prefix.'sources';
}
else
{
$prefix = 'subX';
$user_tbl = $prefix.'admins';
$menu_tbl = $prefix.'menu';
$info_tbl = $prefix.'infopages';
$news_tbl = $prefix.'news';
$art_tbl = $prefix.'articles';
$php_tbl = $prefix.'scripts';
$file_a_tbl = $prefix.'file_categories';
$file_b_tbl = $prefix.'file_data';
$comm_tbl = $prefix.'comments';
$forum_a = $prefix.'forum_a';
$forum_b = $prefix.'forum_b';
$forum_c = $prefix.'forum_c';
$links_a_tbl = $prefix.'links_categories';
$links_b_tbl = $prefix.'links_data';
$poll_a_tbl = $prefix.'poll_desc';
$poll_b_tbl = $prefix.'poll_data';
$bann_a_tbl = $prefix.'banners';
$bann_b_tbl = $prefix.'banners_info';
$topic_tbl = $prefix.'topic';
$mail_tbl = $prefix.'mails';
$gbook_tbl = $prefix.'gbook';
$guest_tbl = $prefix.'users';
$pw_tbl = $prefix.'pw';
$ban_tbl = $prefix.'ban';
$sources_tbl = $prefix.'sources';
}
$prefix2 = 'main'; $guest_tbl = $prefix2.'users'; $pw_tbl = $prefix2.'pw';
Optymalizacja
Czy jPortal nadaje się na taki multisite? Tak i nie. Jeżeli planujesz stworzyć ogromny portal z prawie tysiącem użytkowników (albo i więcej) z kilkudziesięcioma portalami itp. to jPortal może nie wytrzymać. CMS ten nie jest zoptymalizowany pod takie obciążenie! W takich sytuacjach zalecam MD-Pro i jego moduł multisite - rozbudowaną wersję tego co zrobiliśmy przed chwilą z jPortalem.
RkBlog
Comment article