DeDeBIZ官网群,天天有人嫌弃TAG标签,一个好的织梦内容管理系统,不能因为一个TAG标签功能影响生态。为了满足织梦群友的共同需求,小编决定把TAG标签给优化了。
未修改之前:/a/tags/1/1/index.html
修改好之后:/a/tags/dedecms_1_1.html
/a/tags/ 是保存目录,可以在系统基本参数,其它选项,最底部的标签生成目录
教程开始
开始整活,没啥好说的,教程比较长,修改的比较多,就文件替换吧,如果做过二次开发的,就文件对比一下吧。不懂的都可以问我,我只说两个比较重要的地方。
修改生成 英文ID静态版,打开 /system/archive/taglist.class.php 搜索
function MakeHtml(
看到这个函数
function MakeHtml($startpage = 1, $makepagesize = 0) { 中间的代码都省略 }
把这整个函数改为
function MakeHtml($startpage = 1, $makepagesize = 0) { global $cfg_dir_purview, $envs, $cfg_tags_dir, $cfg_cmsurl; $envs['makeTag'] = 1; $tagsdir = str_replace("{cmspath}", "", $cfg_tags_dir); if (isset($envs['makeTag']) && $envs['makeTag'] == 1) { $this->Fields['position'] = $cfg_cmsurl.$tagsdir."/tags.html"; } if (empty($this->TotalResult) && $this->Tag != "") $this->CountRecord(); //初步给固定值的标记赋值 $this->ParseTempletsFirst(); if ($this->Tag != '') { if ($this->TagInfos) { $totalpage = ceil($this->TotalResult / $this->pagesize); if ($totalpage == 0) { $totalpage = 1; } if ($makepagesize > 0) { $endpage = $startpage + $makepagesize; } else { $endpage = ($totalpage + 1); } if ($endpage >= $totalpage + 1) { $endpage = $totalpage + 1; } if ($endpage == 1) { $endpage = 2; } for ($this->PageNo = $startpage; $this->PageNo < $endpage; $this->PageNo++) { $this->ParseDMFields($this->PageNo, 1); $this->dtp->SaveTo($this->GetTruePath().$this->tagsDir.'/'.GetPinyin(stripslashes($this->TagInfos['tag'])).'_'.$this->TagInfos['id'].'_'.$this->PageNo.'.html'); } } } }
就这样改,这样改了以后,就生成拼音的ID了,但还有很多细节需要处理。
标签入库检测,打开 /system/helpers/archive.helper.php 搜索
function InsertOneTag($tag, $aid)
看到下面的
$tag = trim($tag);
改为
$tag = str_replace(array("*","\\","/","?","<", ">", "'",",","。", ":","\"", ";","|", "/*", "*",".", "../", "./"), array("", "","","","","", "", "", "", "","","", "", "", "","", "", ""),$tag); $tag = trim($tag);
作用是处理特殊字符,以免生成TAG标签失败。
调用标签
样式在 /system/extend.func.php 最下面的自定义函数。
tagslist 是列表页获取TAG标签,atags 是文章内容页获取TAG标签
首页、列表、搜索页调用标签
[field:id function=tagslist(@me,20)/]
文章内容调用标签
{dede:field.id function='atags(@me,20)'/}
tag.htm 模板是标签首页 用 [field:link/] 标签正常调用就行了。
懒人包下载
文件对比,文件覆盖,若二次开发过的,记得先备份后修改。
/apps/tags.php 已经加了,访问动态链接时301跳转到伪静态url上来。
诶嘿...嗯,甚是完美。





登录后方可回帖