PHPCMS V9多站點[站群功能]動態設置與靜態設置子站內容URL


phpcms v9的站群功能的 動態站點與靜態站點的配置


站群站點,分為動態站點,和靜態站點兩種設置方法:

靜態的,就是將欄目和內容都了html 文件,
我們先講解下,站群的操作:

 

建好之后,進入你的子站,進行,模型導入,欄目建.設,內容-錄入等工作

新建的子站,是木有模型的,我們就將主站的模型導出,再進子站,把模型導入;

記得,欄目和內容都設置成靜態

我們添加測試內容,進行下一步驟,更新url,更新欄目,更新首頁,更新全站緩存


接下來,配置關鍵的;就是你的服務器;如果你是用iis 的,
就直接新建 網站 的形式來操作,文件夾目錄直接指向子站的文件夾名

如果你是apache ,那就需要進行配置文件設置了
如下圖:

 

-----------------------------------動態配置-----------------------------------


接下來講動態配置站群,也就是url 都是采用屏蔽詞匯址的,因為很多時候,我們需要進行功能方面的實驗,靜態,不方便美工或者程序員對程序的測試!


所以,我們需要用到動態的url,這個時候,就需要操作 phpcms 的路由功能了

找到 根目錄下 \caches\configs\route.php


打開之后,我們看下代碼:

如下:

01. <?php
02. /**
03. * 路由配置文件
04. * 默認配置為default如下:
05. * 'default'=>array(
06. *  'm'=>'phpcms', 
07. *  'c'=>'index', 
08. *  'a'=>'init', 
09. *  'data'=>array(
10. *   'post'=>array(
11. *    'catid'=>1
12. *   ),
13. *   'get'=>array(
14. *    'contentid'=>1
15. *   )
16. *  )
17. * )
18. * 基中“m”為模型,“c”為控制器,“a”為事件,“data”為其他附加參數。
19. * data為一個二維數組,可設置post和get的默認參數。post和get分別對應php中的$_post和$_get兩個超全局變量。在程序中您可以使用$_post['catid']來得到data下面post中的數組的值。
20. * data中的所設置的參數等級比較低。如果外部程序有提交相同的名字的變量,將會覆蓋配置文件中所設置的值。如:
21. * 外部程序post了一個變量catid=2那么你在程序中使用$_post取到的值是2,而不是配置文件中所設置的1。
22. */
23. return array(
24. 'default'=>array('m'=>'content''c'=>'index''a'=>'init'),
25. );

講解下這個文件哦

注釋里,很清楚明白的說明了這個文件的操作方法:

那么,這是一個返回數組的形式的一個文件:

他將什么返回了呢?返回的是站點列表。

每個站點,以
'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),

 

的形式進行傳值

default 就是你的站點url ,這里是系統默認的,就是default,當然,你也可以將他更改成你的站點域名,比如 www.phpcms.cn

這是一個數組,default 對應的值,又是一個數組,里面的說明,在注釋里很詳細了,我就不再啰嗦了,關鍵是站群設置關鍵的地方,就是data 鍵

我新建了一個北京站,域名是 beijing.phpcms.cn

那么接下來,我就這樣寫這個數組;

'beijing.phpcms.cn'=>array('m'=>'content', 'c'=>'index', 'a'=>'init','data'=>array('siteid'=>'2')),

最關鍵的是后面的siteid 的值是多少,不要傳錯了,根據你系統的值,你再看看,然后再寫;

服務器方面怎么設置呢?apahce 直接指向根目錄就可以了
iis方面,我沒操作過。就不多加說明了

/***********更新***********/

子站添加內容,url 會繼續沿用 站點1 的url ,比如
子站的域名是 beijing.phpcms.cn
添加文章之后,url會變成 www.phpcms.cn/index.php?m=content........
而不是我們需要的 beijing.phpcms.cn/index.php?m=content.............
出現這個情況,怎么解決?

找到 內容管理模塊的 classes 下面的 url.class.php

打開之后,找到 89行

原句: $url_arr[0] = $url_arr[1] = app_path.$urls;

改成

1. $this->sitedb = pc_base::load_model('site_model');
2. $siteid=param::get_cookie('siteid');
3. $siteinfo=$this->sitedb->get_one(array('siteid'=>$siteid));
4. $url_arr[0] = $url_arr[1] = $siteinfo['domain'].$urls;

讓子站點的欄目url 也修正過來!

找到 modules/admin/category.php 第418行

修改為:

1. $this->sitedb = pc_base::load_model('site_model');
2. $siteid=param::get_cookie('siteid');
3. $siteinfo=$this->sitedb->get_one(array('siteid'=>$siteid)); 
4. $url $siteinfo['domain'].$url;

ps: 唉 ··都是 app_path 惹的禍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM