Multisites - zintegrowane instalacje
11 July 2008
Comments
Moduł NS-Multisite służy do tworzenia wielu serwisów korzystających z jednego zestawu CMSa. Jest to oszczędne (te CMSy trochę zajmują) oraz bardzo łatwo powiązać je przez bazę danych (np. wspólni użytkownicy).Co będziemy potrzebować
- Zainstalowany na komputerze serwer z php/mysql (XAMPP, easyphp) Jak zainstalować itp.? Zobacz dział "PHP i CGI"- Envolution lub Postnuke
- By multisite działał później na serwerze potrzebne będą domeny/subdomeny
Startujemy
- Wrzucamy CMSa do głównego katalogu z którego nasz komputerowy serwer czyta pliki. Wrzucamy bez żadnych zbiorczych katalogów, tak by http://localhost/index.php i co równoznaczne http://127.0.0.1/index.php uruchamiały cmsa :)- Instalujemy... normalnie
- Podajemy prefix, zalecam prefix np. "main" ze względów porządkowych, gdyż to będzie nasz główny portal.
- Po instalacji czyścimy CMSa - wyrzucamy wszystko, co nie będzie nam potrzebne w żadnym z CMSów. Instalujemy moduły, które wykorzystamy we wszystkich cmsach.
- W panelu admina, w "modułach" instalujemy/aktywujemy moduł NS-Multisites
- Robimy kopię bazy danych (dane i struktura)
- Za pomocą np. wordpada otwieramy zrzut bazy i zmieniamy prefix main na inny, np na "gry" i zapisujemy jako nowy plik sql. Powtarzać do woli
- Wrzucamy plik gry.sql przez phpmyadmina do bazy
Katalog parameters
- W "katalogu" cmsa tworzymy katalog "parameters"- Do tego katalogu wrzucamy plik whoisit.inc.php, który jest w modules/NS-Multisite/instalation
- W katalogu tym (parameters) tworzymy katalogi o nazwie odpowiadającej naszym domenom/subdomenom
- W przypadku robienia tego na komputerze tworzymy katalog o nazwie "localhost" oraz inne o dowolnej na razie nazwie, np "gry" dla tego serwisu o grach :)
- W przypadku normalnego serwera katalogi nazywają się tak jak subdomeny, np: dla www.cms.riklaunim.noi.pl - cms.riklaunim.noi.pl. Wszystkie domeny/subdomeny kierujemy na ten sam index.php naszego CMSa. W zależności od nazwy domeny uruchomi się odpowiedni serwis.
- Teraz do obu katalogów kopiujemy pliki config.php i pntables.php (te z "głównego katalogu")
- W obu katalogach tworzymy katalog images i wrzucamy do niego logo.gif/jpg (z katalogu images Envo)
- Teraz zastępujemy config.php w głównym katalogu CMSa configiem z modules/NS-Multisite/instalation/
- Wywalamy pntables.php z głównego katalogu cmsa
- Testujemy: uruchamiamy nasz cms tym samym adresem (http://localhost/) Jeżeli strona się uruchomi to wszystko działa, jeżeli nie to coś mamy źle :/

Edycja pntables.php poszczególnych serwisów
- Teraz idziemy do katalogu parameters. Mamy tam 2 katalogi: gry i localhost- Dla celów porządkowych zalecam wrzucenie pliku txt do każdego z nich o nazwe odpowiadającej serwisowi. Do localhosta wrzucam main.txt (gdyż będzie to katalog serwisu głównego) a do gry wrzucam gry.txt
- Idę do katalogu gry i otwieram pntables.php
Zaraz na początku mamy $prefix podany, zmieniamy to na:
$prefix2 = "main";
<?php
$banner = $prefix . '_banner';
$pntable['banner'] = $banner;
$pntable['banner_column'] = array ('bid' => $banner . '.pn_bid',
'cid' => $banner . '.pn_cid',
'type' => $banner . '.pn_type',
'imptotal' => $banner . '.pn_imptotal',
'impmade' => $banner . '.pn_impmade',
'clicks' => $banner . '.pn_clicks',
'imageurl' => $banner . '.pn_imageurl',
'clickurl' => $banner . '.pn_clickurl',
'date' => $banner . '.pn_date',
'module' => $banner . '.pn_module',
'moduleid' => $banner . '.pn_moduleid',
'width' => $banner . '.pn_width',
'height' => $banner . '.pn_height',
'lang' => $banner . '.pn_lang');
$bannerclient = $prefix . '_bannerclient';
$pntable['bannerclient'] = $bannerclient;
$pntable['bannerclient_column'] = array ('cid' => $bannerclient . '.pn_cid',
'name' => $bannerclient . '.pn_name',
'contact' => $bannerclient . '.pn_contact',
'email' => $bannerclient . '.pn_email',
'login' => $bannerclient . '.pn_login',
'passwd' => $bannerclient . '.pn_passwd',
'extrainfo' => $bannerclient . '.pn_extrainfo');
$bannerfinish = $prefix . '_bannerfinish';
$pntable['bannerfinish'] = $bannerfinish;
$pntable['bannerfinish_column'] = array ('bid' => $bannerfinish . '.pn_bid',
'cid' => $bannerfinish . '.pn_cid',
'impressions' => $bannerfinish . '.pn_impressions',
'clicks' => $bannerfinish . '.pn_clicks',
'datestart' => $bannerfinish . '.pn_datestart',
'dateend' => $bannerfinish . '.pn_dateend');
<?php
$banner = $prefix2 . '_banner';
$pntable['banner'] = $banner;
$pntable['banner_column'] = array ('bid' => $banner . '.pn_bid',
'cid' => $banner . '.pn_cid',
'type' => $banner . '.pn_type',
'imptotal' => $banner . '.pn_imptotal',
'impmade' => $banner . '.pn_impmade',
'clicks' => $banner . '.pn_clicks',
'imageurl' => $banner . '.pn_imageurl',
'clickurl' => $banner . '.pn_clickurl',
'date' => $banner . '.pn_date',
'module' => $banner . '.pn_module',
'moduleid' => $banner . '.pn_moduleid',
'width' => $banner . '.pn_width',
'height' => $banner . '.pn_height',
'lang' => $banner . '.pn_lang');
$bannerclient = $prefix2 . '_bannerclient';
$pntable['bannerclient'] = $bannerclient;
$pntable['bannerclient_column'] = array ('cid' => $bannerclient . '.pn_cid',
'name' => $bannerclient . '.pn_name',
'contact' => $bannerclient . '.pn_contact',
'email' => $bannerclient . '.pn_email',
'login' => $bannerclient . '.pn_login',
'passwd' => $bannerclient . '.pn_passwd',
'extrainfo' => $bannerclient . '.pn_extrainfo');
$bannerfinish = $prefix2 . '_bannerfinish';
$pntable['bannerfinish'] = $bannerfinish;
$pntable['bannerfinish_column'] = array ('bid' => $bannerfinish . '.pn_bid',
'cid' => $bannerfinish . '.pn_cid',
'impressions' => $bannerfinish . '.pn_impressions',
'clicks' => $bannerfinish . '.pn_clicks',
'datestart' => $bannerfinish . '.pn_datestart',
'dateend' => $bannerfinish . '.pn_dateend');
- Do pntables każdego z serwisów wrzuć tabele z pntables.php znajdującego się w modules/subjects:
<?php
$pntable['subjects'] = $prefix.'_subjects';
$pntable['subjects_column'] = array ('subid' => "$pntable[subjects].subid",
'catid' => "$pntable[subjects].catid",
'subname' => "$pntable[subjects].subname",
'sub</b>' => "$pntable[subjects].sub</b>",
'subimage' => "$pntable[subjects].subimage",
'subactive' => "$pntable[subjects].subactive",
'suborder' => "$pntable[subjects].suborder",
'subcounter' => "$pntable[subjects].subcounter",
'keywords' => "$pntable[subjects].keywords",
'sublanguage' => "$pntable[subjects].sublanguage");
$pntable['subpages'] = $prefix.'_subpages';
$pntable['subpages_column'] = array ('pageid' => "$pntable[subpages].pageid",
'subid' => "$pntable[subpages].subid",
'parentpageid' => "$pntable[subpages].parentpageid",
'pagetitle' => "$pntable[subpages].pagetitle",
'page</b>' => "$pntable[subpages].page</b>",
'pagecontent' => "$pntable[subpages].pagecontent",
'pagefile' => "$pntable[subpages].pagefile",
'pageimage' => "$pntable[subpages].pageimage",
'pageauthor' => "$pntable[subpages].pageauthor",
'pageauthoremail' => "$pntable[subpages].pageauthoremail",
'pageauthorurl' => "$pntable[subpages].pageauthorurl",
'pageactive' => "$pntable[subpages].pageactive",
'pageorder' => "$pntable[subpages].pageorder",
'pagedatetime' => "$pntable[subpages].pagedatetime",
'pagecounter' => "$pntable[subpages].pagecounter",
'reviewactive' => "$pntable[subpages].reviewactive",
'reviewscount' => "$pntable[subpages].reviewscount",
'reviewsscore' => "$pntable[subpages].reviewsscore",
'keywords' => "$pntable[subpages].keywords",
'username' => "$pntable[subpages].username");
$pntable['subreviews'] = $prefix.'_subreviews';
$pntable['subreviews_column'] = array ('reviewid' => "$pntable[subreviews].reviewid",
'pageid' => "$pntable[subreviews].pageid",
'reviewtitle' => "$pntable[subreviews].reviewtitle",
'reviewcomments' => "$pntable[subreviews].reviewcomments",
'reviewscore' => "$pntable[subreviews].reviewscore",
'reviewuser' => "$pntable[subreviews].reviewuser",
'reviewhostip' => "$pntable[subreviews].reviewhostip",
'reviewdatetime' => "$pntable[subreviews].reviewdatetime");
$pntable['subcategories'] = $prefix.'_subcategories';
$pntable['subcategories_column'] = array ('catid' => "$pntable[subcategories].catid",
'catname' => "$pntable[subcategories].catname",
'cat</b>' => "$pntable[subcategories].cat</b>",
'keywords' => "$pntable[subcategories].keywords",
'catorder' => "$pntable[subcategories].catorder");
<?php
//wcześniej lecą pierdoły, zmień od function...
function subjects_pntables()
{
$ModName = basename( dirname( __FILE__ ) );
modules_get_language();
//ak_comment adding language condition ... works
$currentlang = pnUserGetLang();
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();
}
?>
- Bardzo łatwo. Mamy katalog localhost, który odpowiada za główny serwis i katalog gry odpowiedzialny za podserwis o grach. - Zmień nazwę katalogu localhost na np. "glowny" a katalogu gry zmień na "localhost" :) uruchom cmsa - uruchomi ci się serwis o grach :)
RkBlog
Comment article