帝国cms批量添加TAGS、复制TAGS到关键字方法
时间:2024年03月30日
/来源:网络
/编辑:佚名
1、e/class/userfun.php替换成以下代码
<?php
//---------------------------用户自定义标签函数文件
//批量复制TAGS到关键词
function eCopyTag2Key($classid,$id,$newstime){
global $empire,$dbtbpre,$class_r;
$count = count($id); //统计ID数量
if (empty($count))
{//如果id没选中
printerror("未选择信息ID", "", 1, 0, 1);
}
$classid=(int)$classid;//这一步可省略
$mid=(int)$class_r[$classid][modid];//取modid值,这一步可省略
for($i=0;$i<$count;$i++)
{
$id[$i] = (int)$id[$i];
$tbname=$class_r[$classid][tbname];//获取表名
$r = $empire->fetch1("select * from {$dbtbpre}ecms_".$tbname." where id='$id[$i]' limit 1");
$t = $empire->fetch1("select infotags from {$dbtbpre}ecms_".$tbname."_data_".$r['stb']." where id='$id[$i]'");//从信息表中取infotags和keyboard值
$t=array_merge($r,$t);
$taga=$t['infotags'].",".$t['keyboard']; //组合TAGS:在原有的infotags值上加上新keyboard
$tagb[$i] = explode(",",$taga); //设置数组:用,分割tag
$tagc=array_values(array_unique($tagb[$i])); //数组排重:排除重复?
for($t=0;$t<count($tagb[$i]);$t++)
{//二级子循环TAGS数组输出
$newtags[$i].= ",".$tagc[$t];
}
$empire->query("update {$dbtbpre}ecms_".$tbname." set keyboard='".trim($newtags[$i],",")."' where id='$id[$i]'");//将新生成的keyboard写入到表中
}
printerror("已成功将TAGS批量复制到关键词字段", "", 1, 0, 1);
}
//加入TAG表
function eInsertTags2($tags,$classid,$id,$newstime){
global $empire,$dbtbpre,$class_r;
$tags = RepPostVar($tags);
//$tag = explode(",", $tags);
$count = count($id); //统计ID数量
if (empty($count))
{//如果id没选中
printerror("未选择信息ID", "", 1, 0, 1);
}
$classid=(int)$classid;
$mid=(int)$class_r[$classid][modid];//取modid值
for($i=0;$i<$count;$i++)
{
$id[$i] = (int)$id[$i];
$tbname=$class_r[$classid][tbname];//获取表名
$r1 = $empire->fetch1("select * from {$dbtbpre}ecms_".$tbname." where id='$id[$i]' limit 1");
$t = $empire->fetch1("select infotags from {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." where id='$id[$i]'");//从信息表中取infotags和keyboard值
$t=array_merge($r1,$t);
$taga=$t['infotags'].",".$tags; //组合TAGS:在原有的infotags值上加上新tag
$tagb[$i] = explode(",",$taga); //设置数组:用,分割tag
$tagc=array_values(array_unique($tagb[$i])); //数组排重:排除重复?
for($t=0;$t<count($tagb[$i]);$t++)
{//二级子循环TAGS数组输出
$newtags[$i].= ",".$tagc[$t];
$r=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname='$tagc[$t]' limit 1");//查询有无同名的tag
if($r[tagid])
{//如果有tagid,即enewstags表中有相同tag
$datar=$empire->fetch1("select tagid,classid,newstime from {$dbtbpre}enewstagsdata where tagid='$r[tagid]' and id='$id[$i]' and mid='$mid' limit 1");//用tagid,id和mid对enewstagsdata进行查询
if($datar[tagid])
{//如果有数据
if($datar[classid]!=$classid||$datar[newstime]!=$newstime)
{//如果classid和newstime不相同
$empire->query("update {$dbtbpre}enewstagsdata set classid='$classid',newstime='$newstime' where tagid='$r[tagid]' and id='$id[$i]' and mid='$mid' limit 1");//则开始更新
}
}
else
{//查询后没有此数据,则先更新enewstags表,在数量上加1
$empire->query("update {$dbtbpre}enewstags set num=num+1 where tagid='$r[tagid]'");
$empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." set infotags='".trim($newtags[$i],",")."' where id='$id[$i]'");//然后在信息表infotags字段中加上这个新tag,如果按舍得的方法,这一步就可以免了
$empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid) values('$r[tagid]','$classid','$id[$i]','$newstime','$mid');");//然后在enewstagsdata表中插入这些数据
}
}
else
{//如果没有此tag
$empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." set infotags='".trim($newtags[$i],",")."' where id='$id[$i]'");//先在信息表中加上此tag,如果按舍得的方法,这一步就可以免了
$empire->query("insert into {$dbtbpre}enewstags(tagname,num,isgood,cid) values('$tagc[$t]',1,0,0);");//在enewstags表中插入新值
$tagid=$empire->lastid();//把这个tagid给取出来
$empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid) values('$tagid','$classid','$id[$i]','$newstime','$mid');");//既然是没有tagid的,那就在enewstagsdata也得插入新值(不用再查询)
}
}
}
printerror("批量添加TAGS成功", "", 1, 0, 1);
}
?>
2、admin/ecmsinfo.php在文件elseif中间插入以下代码
elseif($enews=="CopyTag2Key")//列表批量复制Tags为关键词
{
$classid=$_POST['classid'];
$id=$_POST['id'];
$newstime=time();
eCopyTag2Key($classid,$id,$newstime);
}
elseif($enews=="AddTags_all")//列表批量添加Tags
{
$classid=$_POST['classid'];
$id=$_POST['id'];
$tags=$_POST['add_listtags'];
$newstime=time();
eInsertTags2($tags,$classid,$id,$newstime);
}
3、e/data/html/list/listinfo.php 把最后一行<tr>替换成
<tr bgcolor="#FFFFFF">
<td height="25" colspan="8">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="68%" height="25">
<font color="#666666"><input type="text" name="add_listtags" id="add_listtags" size="50" value="" />
<input type="submit" name="Submit100" value="批量添加TAGS" onClick="document.listform.enews.value='AddTags_all';document.listform.action='ecmsinfo.php';"> <input type="submit" name="Submit99" value="批量复制TAGS" onClick="document.listform.enews.value='CopyTag2Key';document.listform.action='ecmsinfo.php';"><p>备注:1.先选中要操作的ID,然后在左侧文本框内直接输入多个关键词,以","隔开;然后点击批量添加TAGS即可;之后可点击"批量复制TAGS"将TAG复制到关键词字段.</p><p>2.多选框蓝色为未审核信息;发布者红色为会员投稿;信息ID粗体为未生成,点击ID可刷新页面.</p></font>
</td>
</tr>
</table>
</td>
</tr>
<?php
//---------------------------用户自定义标签函数文件
//批量复制TAGS到关键词
function eCopyTag2Key($classid,$id,$newstime){
global $empire,$dbtbpre,$class_r;
$count = count($id); //统计ID数量
if (empty($count))
{//如果id没选中
printerror("未选择信息ID", "", 1, 0, 1);
}
$classid=(int)$classid;//这一步可省略
$mid=(int)$class_r[$classid][modid];//取modid值,这一步可省略
for($i=0;$i<$count;$i++)
{
$id[$i] = (int)$id[$i];
$tbname=$class_r[$classid][tbname];//获取表名
$r = $empire->fetch1("select * from {$dbtbpre}ecms_".$tbname." where id='$id[$i]' limit 1");
$t = $empire->fetch1("select infotags from {$dbtbpre}ecms_".$tbname."_data_".$r['stb']." where id='$id[$i]'");//从信息表中取infotags和keyboard值
$t=array_merge($r,$t);
$taga=$t['infotags'].",".$t['keyboard']; //组合TAGS:在原有的infotags值上加上新keyboard
$tagb[$i] = explode(",",$taga); //设置数组:用,分割tag
$tagc=array_values(array_unique($tagb[$i])); //数组排重:排除重复?
for($t=0;$t<count($tagb[$i]);$t++)
{//二级子循环TAGS数组输出
$newtags[$i].= ",".$tagc[$t];
}
$empire->query("update {$dbtbpre}ecms_".$tbname." set keyboard='".trim($newtags[$i],",")."' where id='$id[$i]'");//将新生成的keyboard写入到表中
}
printerror("已成功将TAGS批量复制到关键词字段", "", 1, 0, 1);
}
//加入TAG表
function eInsertTags2($tags,$classid,$id,$newstime){
global $empire,$dbtbpre,$class_r;
$tags = RepPostVar($tags);
//$tag = explode(",", $tags);
$count = count($id); //统计ID数量
if (empty($count))
{//如果id没选中
printerror("未选择信息ID", "", 1, 0, 1);
}
$classid=(int)$classid;
$mid=(int)$class_r[$classid][modid];//取modid值
for($i=0;$i<$count;$i++)
{
$id[$i] = (int)$id[$i];
$tbname=$class_r[$classid][tbname];//获取表名
$r1 = $empire->fetch1("select * from {$dbtbpre}ecms_".$tbname." where id='$id[$i]' limit 1");
$t = $empire->fetch1("select infotags from {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." where id='$id[$i]'");//从信息表中取infotags和keyboard值
$t=array_merge($r1,$t);
$taga=$t['infotags'].",".$tags; //组合TAGS:在原有的infotags值上加上新tag
$tagb[$i] = explode(",",$taga); //设置数组:用,分割tag
$tagc=array_values(array_unique($tagb[$i])); //数组排重:排除重复?
for($t=0;$t<count($tagb[$i]);$t++)
{//二级子循环TAGS数组输出
$newtags[$i].= ",".$tagc[$t];
$r=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname='$tagc[$t]' limit 1");//查询有无同名的tag
if($r[tagid])
{//如果有tagid,即enewstags表中有相同tag
$datar=$empire->fetch1("select tagid,classid,newstime from {$dbtbpre}enewstagsdata where tagid='$r[tagid]' and id='$id[$i]' and mid='$mid' limit 1");//用tagid,id和mid对enewstagsdata进行查询
if($datar[tagid])
{//如果有数据
if($datar[classid]!=$classid||$datar[newstime]!=$newstime)
{//如果classid和newstime不相同
$empire->query("update {$dbtbpre}enewstagsdata set classid='$classid',newstime='$newstime' where tagid='$r[tagid]' and id='$id[$i]' and mid='$mid' limit 1");//则开始更新
}
}
else
{//查询后没有此数据,则先更新enewstags表,在数量上加1
$empire->query("update {$dbtbpre}enewstags set num=num+1 where tagid='$r[tagid]'");
$empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." set infotags='".trim($newtags[$i],",")."' where id='$id[$i]'");//然后在信息表infotags字段中加上这个新tag,如果按舍得的方法,这一步就可以免了
$empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid) values('$r[tagid]','$classid','$id[$i]','$newstime','$mid');");//然后在enewstagsdata表中插入这些数据
}
}
else
{//如果没有此tag
$empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$r1['stb']." set infotags='".trim($newtags[$i],",")."' where id='$id[$i]'");//先在信息表中加上此tag,如果按舍得的方法,这一步就可以免了
$empire->query("insert into {$dbtbpre}enewstags(tagname,num,isgood,cid) values('$tagc[$t]',1,0,0);");//在enewstags表中插入新值
$tagid=$empire->lastid();//把这个tagid给取出来
$empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid) values('$tagid','$classid','$id[$i]','$newstime','$mid');");//既然是没有tagid的,那就在enewstagsdata也得插入新值(不用再查询)
}
}
}
printerror("批量添加TAGS成功", "", 1, 0, 1);
}
?>
2、admin/ecmsinfo.php在文件elseif中间插入以下代码
elseif($enews=="CopyTag2Key")//列表批量复制Tags为关键词
{
$classid=$_POST['classid'];
$id=$_POST['id'];
$newstime=time();
eCopyTag2Key($classid,$id,$newstime);
}
elseif($enews=="AddTags_all")//列表批量添加Tags
{
$classid=$_POST['classid'];
$id=$_POST['id'];
$tags=$_POST['add_listtags'];
$newstime=time();
eInsertTags2($tags,$classid,$id,$newstime);
}
3、e/data/html/list/listinfo.php 把最后一行<tr>替换成
<tr bgcolor="#FFFFFF">
<td height="25" colspan="8">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="68%" height="25">
<font color="#666666"><input type="text" name="add_listtags" id="add_listtags" size="50" value="" />
<input type="submit" name="Submit100" value="批量添加TAGS" onClick="document.listform.enews.value='AddTags_all';document.listform.action='ecmsinfo.php';"> <input type="submit" name="Submit99" value="批量复制TAGS" onClick="document.listform.enews.value='CopyTag2Key';document.listform.action='ecmsinfo.php';"><p>备注:1.先选中要操作的ID,然后在左侧文本框内直接输入多个关键词,以","隔开;然后点击批量添加TAGS即可;之后可点击"批量复制TAGS"将TAG复制到关键词字段.</p><p>2.多选框蓝色为未审核信息;发布者红色为会员投稿;信息ID粗体为未生成,点击ID可刷新页面.</p></font>
</td>
</tr>
</table>
</td>
</tr>
新闻资讯 更多
- 【帝国cms教程】帝国CMS模板变量$GLOBALS[navclassid]用法分析04-03
- 【帝国cms教程】鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总04-03
- 【帝国cms教程】怎么快速找出帝国CMS数据库配置文件路径及迁移网站后修改技巧!04-03
- 【帝国cms教程】帝国CMS模板$GLOBALS[navclassid]用法详解04-03
- 【帝国cms教程】帝国cms 7.5版列表页分页样式修改笔记04-02
- 【帝国cms教程】解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法04-02
- 【帝国cms教程】帝国CMS只备份栏目和模板的方法04-02
- 【帝国cms教程】帝国CMS怎样删除清空数据库记录?04-02
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法