pbootcms網站Tags標簽偽靜態處理教程

2022-06-06 439 19 編輯:超級管理員 來源:本站

第一步:后臺需要開啟偽靜態

pbootcms

第二步:執行SQL語句,創建tag標簽 id表

mysql語句

CREATE TABLE `ay_tag_ex` (`id` int(11) NOT NULL AUTO_INCREMENT,`tag` varchar(255) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

sqlite語句

create table ay_tag_ex ([id] integer PRIMARY KEY autoincrement, -- 設置主鍵[tag] varchar (50));

第三步:在模型添加保存數據的方法

找到 /apps/admin/model/content/TagsModel.php 文件,在文件最后一個{前面增加如下代碼
Tag標簽偽靜態處理

// <!-- tag修改 -->public function getTagId($tag){$one =  parent::table('ay_tag_ex')->where("tag='{$tag}'")->find();if ($one){$tag = $one->id;}return $tag;}public function getTagName($id){$tag = '';$one =  parent::table('ay_tag_ex')->where("id={$id}")->find();if ($one){$tag = $one->tag;}return $tag;}public function saveTagEx($tags){$tags_arr = explode(',',$tags);foreach ($tags_arr as $tag) {$one =  parent::table('ay_tag_ex')->where("tag='{$tag}'")->find();if (empty($one)){$add = ['tag'=>$tag];parent::table('ay_tag_ex')->insert($add);}}}public function saveAllTagEx(){$contents =  parent::table('ay_content')->select();foreach ($contents as $content) {$this->saveTagEx($content->tags);}return true;}

第四步:修改文章內容新增和修改保存邏輯

打開文件 /apps/admin/controller/content/ContentController.php ,找到如下代碼

namespace appdmincontrollercontent;

在下方添加

use appdminmodelcontentTagsModel;

pbootcms
繼續找到

if (! ! $id = $this->model->addContent($data)) {

在下方添加

// <!-- tag修改 -->$tgMd = new TagsModel();$tgMd->saveTagEx($tags);$tgMd->saveAllTagEx();

繼續找到

if ($this->model->modContent($id, $data)) {

在下方添加

// <!-- tag修改 -->$tgMd = new TagsModel();$tgMd->saveTagEx($tags);$tgMd->saveAllTagEx();

1642214994131958.jpg

1642215220191678.png

完成上面幾步,添加和修改文章,就會有映射了,也就是說 ay_tag_ex 表會有id和標簽名的對應關系了。

第五步:修改前端訪問tag的邏輯

打開文件 /apps/home/controller/ParserController.php , 找到如下代碼

namespace apphomecontroller;

在下方添加

use appdminmodelcontentTagsModel;

微信截圖_20220115183853.png

繼續找到如下代碼

if ($fuzzy) {$where2[] = "a.tags like '%" . $get_tag . "%'";} else {$where2[] = "a.tags='" . $get_tag . "'";}

替換成

// <!-- tag修改 -->list($tid,$tml) = explode('.',$get_tag);$tgMd = new TagsModel();$tag_name =$tgMd->getTagName($tid);if ($fuzzy) {$where2[] = "a.tags like '%" . $tag_name . "%'";} else {$where2[] = "a.tags='" . $tag_name . "'";}

微信截圖_20220115181249.png
繼續搜索找到如下代碼(大概1840行

$url_rule_type = $this->config('url_rule_type') ?: 3;

在下方添加

// <!-- tag修改 -->$tagMd = new TagsModel();$id = $tagMd->getTagId($value['tags']);$idTag = $id.".html";

并將 urlencode($value['tags']) 修改成 $idTag

pbootcms
繼續找到

$link = $link . '?tag=' . $idTag;

修改成

// <!-- tag修改 -->$link = $link . 'tag/' . $idTag;

pbootcms

第六步:修改TagController.php文件

打開 /apps/home/controller/TagController.php 文件,找到如下代碼(大概33行

if (defined('RVAR')) {$_GET@['tag'] = RVAR;}

在下方添加

// <!-- tag修改 -->$tag_arr = explode('.',$_GET@['tag']);list($id,$p) = explode('_', $tag_arr[0]);$_GET@['tag'] = $id.".html";$_GET@['page'] = $p ? $p : 1;$tagMd = new ppdminmodelcontentTagsModel();$name = $tagMd->getTagName($id);$_GET@['tag_name'] = $name;

pbootcms

第七步:修改 core iewPaging.php 文件(處理分頁)

找到

if ($page == 1) {if ($qs) {return $this->getPreUrl() . '?' . $qs;} else {return $this->getPreUrl();}} else {if ($qs) {return $this->getPreUrl() . '?' . $qs . '&page=' . $page;} else {return $this->getPreUrl() . '?page=' . $page;}}

替換成

if ($page == 1) {if ($qs) {return $this->getPreUrl() . '?' . $qs;} else {if(strpos($this->getPreUrl(),'/tag/') !== false){  //判斷是否tag頁面$pattern="/(_d+)/i";$r="";$a = preg_replace($pattern,$r,$this->getPreUrl());$a =  str_replace(".html", "", $a) . '.html';return $a;}else{return $this->getPreUrl();}}} else {if ($qs) {return $this->getPreUrl() . '?' . $qs . '&page=' . $page;} else {if(strpos($this->getPreUrl(),'/tag/') !== false){$pattern="/(_d+)/i";$r="";$a = preg_replace($pattern,$r,$this->getPreUrl());$a =  str_replace(".html", "", $a) . '_' . $page.'.html';return $a;}else{return $this->getPreUrl() . '?page=' . $page;}}}

Tag標簽偽靜態處理

第八步:修改IndexController.php

打開 ppshomecontrollerIndexController.php,找到

if ($url_rule_type == 2 && stripos(URL, $_SERVER['SCRIPT_NAME']) !== false) { // 禁止偽靜態時帶index.php訪問_404('您訪問的內容不存在,請核對后重試!');}$path = P;

修改成

if (stripos(URL, '/tag/') !== false){$arr  = explode('/',URL);$p = $arr[0].$arr[1];$path = "/".$p."/";foreach ($arr as $k=>$val) {if ($val=='tag'){break;}}$tag_v = $arr[++$k];$parr = explode('_',rtrim($tag_v,'.html'));if (!strpos(URL,'.html')){$url = ((int)$_SERVER['SERVER_PORT'] == 80 ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'];$url = $url.rtrim(URL,'/');//替換if (isset($parr[1])){$path2 = "/".$p."_".$parr[1]."/";$url = str_replace($path,$path2,$url);}else{//獲取當前類目$sort = $this->model->getSort($p);if (!$sort){//去掉$p2 = strstr($p,"_",true);$path2 = "/".$p2."/";$url = str_replace($path,$path2,$url);}}$url = str_replace($tag_v,$parr[0] .'.html',$url);header('Location: '.$url);}$_GET@['page'] = $parr[1] ? $parr[1] : 1;$_GET@['tag'] =$parr[0] .'.html';$tagMd = new ppdminmodelcontentTagsModel();$name = $tagMd->getTagName($parr[0]);$_GET@['tag_name'] = $name;}else{if ($url_rule_type == 2 && stripos(URL, $_SERVER['SCRIPT_NAME']) !== false) { // 禁止偽靜態時帶index.php訪問_404('您訪問的內容不存在,請核對后重試!');}$path = P;}

pbootcms

tag列表調傭tag標簽名稱

{$get.tag_name}

完成。

相關知識點: pbootcms pbootcms標簽偽靜態 tags偽靜態
本站文章均為蜀戎網絡摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,未經允許禁止復制轉載!感謝...
更多人喜歡

在線
客服

在線客服服務時間:9:00-21:00

客服
熱線

13227777380
7*24小時客服服務熱線

客服
微信

掃一掃微信咨詢
頂部
最近2019年免费中文字幕电影,最近更新2018中文国语字幕,最近中文字幕2018高清一页,一二三四免费观看视频中文版在线宜宾蜀戎网络公司