用PHPCMS開發的第一個項目是一個素材類網站 ,之所以選PHPCMS估計是因為看了她的百萬級的數據測試報告。而之后,我越用感覺也越不錯。當然,期間遇到過不少問題, 總結了一下,方便以后開發。(版本:phpcms2008sp3_gbk)
綜合問題
使用GET標簽時靜態分頁出錯以及分頁地址會鏈接到后臺
文件:/include/global.func.php
函數:pages
在 if($curr_page>0) 前添加 $url = load('url.class.php'),如下:
$url = load('url.class.php');
if($curr_page>0)
只要添加一行代碼就解決了,而在網上找的解決方法卻非常復雜,好郁悶!
而分頁地址會鏈接到后臺則只需要將以下的第一行代碼替換成第二行就OK了,當然,建議把第一行注釋掉,加上第二行。
代碼如下:
$multipage .= $catid ?' <u><b>'.$pages.'</b></u><a href="'.$url->category($catid, $curr_page, 1, 1).'">下一頁</a>' : ' <u><b>'.$pages.'</b></u><a href="'.pageurl($urlrule, $curr_page, $array).'">下一頁</a>';
上傳文件路徑修改
文件:include/attachment.class.php
找到 $this->savepath 和 $dir 這兩個變量,以下是修改后的值,路徑為“uploadfile/年/月/日/”:
$this->savepath = UPLOAD_ROOT.date('Y/md/');
$dir = date('Y/m/d/', TIME);
將縮略圖保存到單獨的文件夾,這樣子也方便管理
文件:/include/global.func.php
$newimgurl = dirname($imgurl).'/thumb/thumb_'.$width.'_'.$height.'_'.basename($imgurl);
文件:/include/attachment.class.php
以下是 get_thumb 函數修改后的代碼
代碼如下:
{
/* 縮略圖文件夾 */
$thumbdir = dirname($image).'/thumb';
if (!file_exists($thumbdir)) mkdir($thumbdir, 0700);
return dirname($image).'/thumb/thumb_'.basename($image);
//return str_replace('.', '_thumb.', $image);
}
BUG (UPLOAD_PATH 不存在)
記不清報什么錯了,反正后來我是直接把 UPLOAD_PATH 這個常量刪掉,最后就正常了。有知道提示什么錯誤的請留個言。
提示錯誤:Warning: mkdir() [function.mkdir]: No such file or directory in... 類似這樣子的
只要把UPLOAD_PATH去掉然后更新緩存,一切正常。
/include/fields/images/output.inc.php
$thumb = UPLOAD_URL.$attachment->get_thumb(UPLOAD_PATH.$a['filepath']);
全站搜索最多顯示的記錄數
PHPCMS 的全站搜索很強大,貌似能支持百萬級的數據量。通常,搜索結果不需要輸出全部記錄數的,所以我將搜索輸出結果設置為最多1000條(已經很多了,GOOGLE都沒這么多,呵呵),以下是修改后的部分代碼。
代碼如下:
$page = max(intval($page), 1);
$page = $page>100 ? 100 : $page; (增加了這行代碼)
文件:/search/include/search.class.php
$this->total = cache_count("SELECT COUNT(*) AS `count` FROM `$this->table` WHERE $where");
$this->total = $this->total>1000 ? 1000 : $this->total; (增加了這行代碼)
采集模塊
該如何去設置采集規則就不多說了,官方有詳細介紹:http://www.phpcms.cn/2009/0522/220.html
需要采集的話使用GBK版本的PHPCMS
試過用UTF-8版本的去采集,結果不論怎么調,采回來的中文都是亂碼,好郁悶。沒有深入研究,轉投GBK。
修改采集圖片和壓縮文件時的保存路徑
文件:/spider/include/get_remotefiles.func.php
函數:do_saveremotefiles
修改函數中以下兩個變量;以下是我修改后的結果,保存路徑為“uploadfile/年/月/日/”:
代碼如下:
$uploaddir = PHPCMS_ROOT . '/' . $uploaddir . '/' . date('Y/m/d') . '/';
采集內容時無法遠程保存圖片
src 前的空格導致了圖片在采集內容時采集不了,只有在發布時才能采集得到。
文件:/spider/include/get_remotefiles.func.php
函數:get_remotefileurls
以下分別是修改前和修改后的代碼,注意src前的空格,只要把空格去掉就OK了。
代碼如下:
if (!preg_match_all("/<(?:a|img).+?(href|src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $string, $matches))
遠程保存非內容中的圖片和文件
采集模塊默認只會保存“內容”標簽中的圖片和文件,而其它標簽中不論出現多少次img或a都不會被采集。如果你需要把圖片和文件分別保存到其它字段,這個修改貌似挺有用的。
文件:/spider/admin/mainspider.inc.php
行數:372行
以下是修改結果:
代碼如下:
抓取不到頁面時采集狀態改為未采集
如果被采集網站不穩定,有時會出現抓取不到采集頁面的情況,而此時采集狀態還是會被標記為已采集。所以只要小小修改一下,我們會方便很多。
文件:/spider/admin/mainspider.inc.php
行數:664行
以下是修改結果,添加了“&& (trim($body)!=''”這一句:
代碼如下: