- 最后登录
- 2018-10-27
- 威望
- 0 创业威望
- 金钱
- 141 创业币
- 注册时间
- 2009-2-9
- 阅读权限
- 100
- 帖子
- 69
- 精华
- 0
- UID
- 158
- 金钱
- 141 创业币
- 在线时间
- 30 小时
|
TAG标签按模型显示(适合多个模型的网站),很多人都会发现,如果同一个DedeCMS使用不同模型绑定不同域名,做类型几个不同的网站,那么在用tag标签的时候,会显示一些和现在这个网站内容完全无关的TAG,看起来很是不合理,就象我的,因为是直接在一个dede里面设个BLOG模型,结果在里面把整个网站的TAG都显示出来完了,做为个人博客来说,就非常的不合理了,所以改写了一个DEDE的代码,在这里和大家分享下。不过现在有个缺点,就是这个如果两个或者两个以上都有相同的TAG,那么只有一个模型会显示,当然,这个修改对于使用官方默认的TAG标签没有任何影响,而且只能在文章页面有效。
好了,废话到这里,下面说说修改的方法,好了,我把要修改的地方用红色标出来。
第一、当然是在数据库里面新建一个保存TAG模型ID的字段
ALTER TABLE `dede_tagindex` ADD `channelid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `tag` ;
第二、修改TAG插入数据库命令
打开include/archives.func.php文件,找到 InsertOneTag
把
global $typeid,$arcrank,$dsql; 改成
global $typeid,$arcrank,$dsql,$channelid;
红色的是要加进去的
$rs = $dsql->ExecuteNoneQuery("Insert Into `# @ _ _tagindex`(`tag`,`channelid`,`count`,`total`,`weekcc`,`monthcc`,`weekup`,`monthup`,`addtime`)
values('$tag','$channelid' ,'0','1','0','0','$addtime','$addtime','$addtime'); ");
//`# @ _ _tagindex 中间没有空格,为了在PW方便,打上空格
第三、修改TAG标签内容获取SQL命令
打开include/taglib/tag.lib.php
//加上属性
$attlist="row|30,sort|new,getall|0,channel|all,channelid|0";
//添加获取TAG内容代码
$addsql = ' where ';
if($channel=='one'&&$refObj->TypeLink->TypeInfos['channeltype']!='')
{
//arc.archives.class.php
$addsql .= " channelid = '{$refObj->TypeLink->TypeInfos['channeltype']}' ";
}
else
{
$addsql .= " channelid > '-99' ";
}
//如果TAG标志有channelid 值,channel=one无效
if($channelid>0)
{
$addsql = " where channelid = '{$channelid}' ";
}
//这里也要改下,要不前面的修改无效。
$addsql .= " and id in($ids) ";
第四、修改你的模板咯。。
在原来官方默认标签前提下,加上两个属性值 channel='one' 表示显示当前文章所属模型的全部TAG
channelid='id' 表示指定模型的TAG,id可以在后台的内容模型管理里面查找,设置这个 channel='one' 无效。
{dede:tag row='30' sort='new' getall='0' channel='one'}
<a href='[field:link/]'>[field:tag/]([field:total/])</a>
{/dede:tag}
{dede:tag row='30' sort='new' getall='0' channelid='1'}
<a href='[field:link/]'>[field:tag/]([field:total/])</a>
{/dede:tag}
最后呢~改完了还能干什么,当然是去看看结果咯。
感谢此帖作者:溪梦缘曦 |
|