phpcms v9 欄目偽靜態完全自定義為欄目英文目錄名
1,後臺增加url規則,增加後.導航上,或分頁號上,會自動替換為靜態的樣式.類似www.abc.com/news/2/ 2表示頁碼
phpcms v9 的後臺擴充套件,url規則,新增兩個規則,
一個是名稱為category的規則,規則的前面的斜線可以去掉,不過可能影響分頁問題
/{$catdir}/|/{$catdir}/{$page}/
url示例為 www.abc.com/news/
一個是名稱為show規則
{$catdir}/{$id}.html|{$catdir}/{$id}_{$page}.html
示例為www.abc.com/news/99.html
然後,找到想偽靜態的欄目,修改.生成html設定,生成Html全設定為否,url規則選擇自己剛才設定的.儲存,
最後更新欄目快取及批量更新url,不更新無效
2,如果為apache的伺服器空間,偽靜態規則如下,注意,要儲存在.htaccess 檔案中,並上傳到網站根目錄中,其它規則自己轉換
RewriteEngine on
#靜態檔案以及API目錄不需要偽靜態
RewriteRule ^(statics|api|uploadfile)(.*) - [L]
#欄目頁
RewriteRule ^([0-9A-Za-z_]*)$ index.php?m=content&c=index&a=lists&catdir=$1
RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1
RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2
RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)/$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2
#上面欄目分頁,是完全的字母加數字的形式,如www.abc.com/news/2 ,後面不帶其它字元,或加一個/字元,如果伺服器偽靜態匹配到了"域名/字母/數字/"的組合,則會自動跳轉到index.php?m=content&c=index&a=lists&catdir=$1&page=$2這個頁面中.所以.前面的規則不可重複,否則會錯亂.
#內容頁
RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)\.html$ index.php?m=content&c=index&a=show&catdir=$1&id=$2
3,檔案,phpcms\phpcms\modules\content\index.php中
搜尋
$catid = intval($_GET['catid']);
一共兩處,修改為
if(isset ($_GET['catid'])){
$catid = intval($_GET['catid']);
}else{
$catdir=$_GET['catdir'];
$s=$this->_getCategoryId($catdir);
$catid=$s[0][catid];
}
然後,在最下面
} 這個 大括號的前面增加一個函式,如下
protected function _getCategoryId($catdir){
$this->category_db = pc_base::load_model('category_model');
$result = $this->category_db->select(array('catdir'=>$catdir));
// print_r($result);
return $result;
}
4, 開啟phpcms\modules\content\classes\url.class.php,找到
if (!$setting['ishtml']) { //如果不生成靜態
將下面的:
$url = str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);
if (strpos($urls, '\\')!==false) {
$url = APP_PATH.str_replace('\\', '/', $urls);
}
整體替換為
$domain_dir = '';
if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {
if (preg_match('/^((http|https):\/\/)?([^\/]+)/i', $category['url'], $matches)) {
$match_url = $matches[0];
$url = $match_url.'/';
}
$db = pc_base::load_model('category_model');
$r = $db->get_one(array('url'=>$url), '`catid`');
if($r) $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';
}
$categorydir = $this->get_categorydir($catid);
$catdir = $category['catdir'];
$year = date('Y',$time);
$month = date('m',$time);
$day = date('d',$time);
//echo $catdir;
$urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);
// echo $urls."<br>";
if (strpos($urls, '\\')!==false) {
$urls = APP_PATH.str_replace('\\', '/', $urls);
}
$url = $domain_dir.$urls;
參考源 http://blog.ganhui0818.cn/article/335.htm
相關文章
- 自定義目錄
- 帝國CMS欄目管理增加自定義欄位值的為空判斷
- pbootcms模板內頁呼叫子欄目,如果沒有子欄目則呼叫同級欄目boot
- Zblog Nginx 下二級目錄設定偽靜態程式碼Nginx
- PhpCms自定義欄位的使用說明PHP
- PbootCMS模板新增欄目提示:該內容欄目編號已經存在,不能再使用boot
- Apache 新增自定義vhost 目錄,等其他配置Apache
- 我為什麼要做《魚論》這個欄目
- PbootCMS模板欄目頁如何呼叫當前欄目的文章boot
- pbootcms模板指定欄目標籤呼叫boot
- 關於《隨筆》這個欄目
- gitignore 忽略目錄下檔案僅保留目錄形態Git
- 帝國CMS網站以顯示“Hello,World”為例子,目錄名用“helloworld”,目錄格式為網站
- 虛幻5渲染程式設計專欄概述及目錄程式設計
- [提問交流]當程式不在根目錄的時候怎麼設定偽靜態
- PbootCMS 一級欄目下的二級三級欄目高亮boot
- 點選導航欄使當前欄目背景變色
- java使用sshd 實現sftp 自定義顯示目錄JavaFTP
- 使用Java HttpWebServer建立靜態檔案web伺服器並設定子路徑指向本地自定義目錄JavaHTTPWebServer伺服器
- 帝國CMS更改域名修改欄目目錄後資訊地址中的域名不變解決方法
- CIO時代APP正式推出教師欄目APP
- 為Jupyter Notebook 新增目錄
- 帝國cms裡欄目列表模板獲取同級欄目的方法
- Linux程式開發中如何判斷目錄是否為根目錄?Linux
- pbootcms模板首頁如何某個指定的欄目名稱和連結boot
- VUE - 配置根目錄(用@代表src目錄)Vue
- Nginx同一個server部署多個靜態資源目錄NginxServer
- PbootCMS 模板呼叫一級欄目下子欄目實現第一個高亮boot
- 目錄管理
- ~ 家目錄
- 目錄操作
- scl目錄
- Blog目錄
- 20181216目錄
- Leetcode目錄LeetCode
- makefile中的偽目標
- ASP.NET Core 2.0 自定義 _ViewStart 和 _ViewImports 的目錄位置ASP.NETViewImport
- 織夢無法刪除欄目怎麼辦
- vue獲取目錄下的檔名Vue