這兩個月來寫的文章愈來愈少了,不是懶,由於太忙了--爲客戶趕作網站。由於客戶指定要使用phpcms v9,還要求使用phpcms v9_42版本實現tag僞靜態,在接手的時候phpcms v9_42是最新版本,而如今phpcms官方已經發布phpcms v9_5.X了。對於phpcms v9實現tag僞靜態的實現方法,百度一下就會一大堆,但倒是phpcms v9_2X版本的,並且最終實現的結果是:域名/關鍵詞_6_1.html,我看得都以爲彆扭--下面我會把URL的尾巴砍得更短些。php
phpcms v9_42版本是目前(2013-10-29)最新的版本,相比於phpcms v9_2X的tag模塊的代碼,改動較大,因而乎,百度得來的phpcms v9_2X版本tag僞靜態的實現方法就OUT了。怎麼辦呢?下面我就把建站過程當中整理的phpcms v9_42版本下tag僞靜態的實現方法放出來,絕對是最新(2013.12.10)的了。html
TAG模塊僞靜態設置web
一、添加url規則測試
在後臺->擴展->url規則裏添加一個新的規則用於評論模塊,以下所示:網站
{$tag}_{$page}.html編碼
添加完成後記住前面的id號,好比32。url
二、在代碼裏寫入url規則spa
打開phpcms/modules/content/tag.php文件,找到:操作系統
1 |
$infos = $keyword_data_db ->listinfo( $where , '`id` DESC' , $page , $pagesize ); |
這一行往上面添加如下代碼:code
1 |
$urlrules = getcache( 'urlrules' , 'commons' ); |
2 |
$urlrule = $urlrules [32]; //調用url規則 |
而後再把
1 |
$infos = $keyword_data_db ->listinfo( $where , '`id` DESC' , $page , $pagesize ); |
改爲
1 |
$infos = $keyword_data_db ->listinfo( $where , '`id` DESC' , $page , $pagesize , '' , '9' , $urlrule ,Array( 'tag' =>urlencode( $tag ))); |
目的就是往查詢語句裏面添加前面設置的url規則。
三、修改模板
打開phpcms\templates\default\content\show.html,找到:
1 |
{APP_PATH}index.php?m=content&c=tag&a=lists&tag={urlencode( $keyword )} |
改爲
{APP_PATH}{urlencode($keyword)}_1.html
打開phpcms\templates\default\content\tag.html,把分頁標籤
1 |
{ $pages } |
改爲
1 |
{ str_replace ( "_0.html" , "_1.html" , $pages )} |
四、在.htaccess文件里加入URL規則
在網站的根目錄的.htaccess文件(沒有的本身建)加入如下URL規則
1 |
RewriteRule ^(.*)_([0-9]+).html index.php?m=content&c=tag&a=lists&tag= $1 &page= $2 |
最後顯示出來的URL樣式以下:http:/w3note.com/關鍵詞_1.html
可能會遇到的問題
在操做系統:Linux ,點擊標籤時會出現找不到此關鍵字的提示,緣由是轉碼問題,而在本地測試則沒有這種狀況。
解決的辦法
打開phpcms/modules/content/tag.php
找到
1 |
$tag = safe_replace( addslashes ( $_GET [ 'tag' ])); |
在其下面添加以下代碼
1 |
$tag = iconv( "gb2312" , "utf-8" , $tag ); //轉編碼 |
若是還不行,不防試着調換"gb2312","utf-8"的位置。
轉載:w3note.com/web/133.html