第一步:后臺需要開啟偽靜態
第二步:執行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修改 -->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;
繼續找到
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();
完成上面幾步,添加和修改文章,就會有映射了,也就是說 ay_tag_ex
表會有id和標簽名的對應關系了。
第五步:修改前端訪問tag的邏輯
打開文件 /apps/home/controller/ParserController.php
, 找到如下代碼
namespace apphomecontroller;
在下方添加
use appdminmodelcontentTagsModel;
繼續找到如下代碼
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 . "'";}
繼續搜索找到如下代碼(大概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
繼續找到
$link = $link . '?tag=' . $idTag;
修改成
// <!-- tag修改 -->$link = $link . 'tag/' . $idTag;
第六步:修改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;
第七步:修改 coreiewPaging.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;}}}
第八步:修改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;}
tag列表調傭tag標簽名稱
{$get.tag_name}
完成。
相關知識點: pbootcms pbootcms標簽偽靜態 tags偽靜態- 1火車頭采集器偽原創php插件
- 2FastAdmin問答社區系統火車頭采集入庫使用教程
- 3藍天采集器藍天采集器2.2更新文檔
- 4藍天采集器重復采集
- 5藍天采集器拼接網址問題--卡殼了
- 6藍天采集器郵箱發出去的文字都是亂碼
- 7藍天采集器XPath規則插件-火狐firebug和firepath插件安裝方法(最新)
- 8藍天采集器入數據庫日期如何操作?
- 9火車頭采集國外英文網站教程分享
- 10藍天采集器藍天采集可以支持阿里云OSS嗎或者是七牛也行那樣就完美了
- 11蜀戎seo教你分分鐘破解eval(function(p,a,c,k,e,d){}))的JavaScript代碼
- 12藍天采集器AMH里面,安裝到第三步點下一步,不會進行下去了
- 13藍天采集器如何采集disucz站的回帖評論信息
- 15PbootCMS出現登錄失敗,表單提交校驗失敗等情況怎么辦?
- 16藍天采集器批量采集百度下拉框關鍵詞視頻+圖文教程
- 17狂雨小說CMS-狂雨小說下載-采集規則-導入方法
- 18藍天采集器請問 獲取內容頁中,內容以JSON方式獲取,無法循環入庫
- 19html5外貿營銷型網站建設方案
- 20藍天采集器JSON采集問題
-
藍天采集器請問關聯頁的內容怎么采集啊···
關聯頁的網址已經采集到了,但里面的內容怎么采集不到?還是和正常內容頁的字段采集規則一樣嗎? 找到了,可以在數據源中選擇關聯頁,剛發現這個下拉選擇框.... 是的,要指定數據源
-
藍天采集器請問發布方式的自定義插件是···
請問發布方式的自定義插件不是可以插入PHP代碼處理數據嗎?為什么我的沒有效果,有人能發一個成功的文件來參考參考嗎? 可以插入php代碼,請確保數據庫配置成功且php代碼無誤
-
html5外貿營銷型網站建設方案
外貿網站網站建設是外貿企業的第一步,因為主要客戶是海外市場,于是,一個好的外貿網站就成了一個窗口,向海外客戶展示企業產品、宣傳企業理念、維護企業形象,通過互聯網打造品牌。外貿網站的面向用戶主要為國外客戶,所以除了文字采用英文外,風格設計、頁···
-
藍天采集器發布改為文件儲存,但是為什···
3個都試了,都沒有數據,空的 是沒有采集到嗎 點采集看看有木有采集到數據
-
zblog藍天采集器發布插件帶評論置···
zblog是一款輕量化的博客程序,簡單小巧,數據庫就幾個字段,占用體積也是非常小。蜀戎給大家分享下藍天發布插件參數配置;我們的發布插件默認的只要標題、內容、作者、分類、還有一個自動摘要功能,其他都沒有了。蜀戎根據需要來添加了更多的功能,看下···