如何批量替换指定栏目内容代码
早前采集某站,因为对方网站代码和本站有一点细微的差别,可是本站又存在多个栏目使用该模版,所以需要批量替换全站代码显然会有些许问题,所以只能指定替换某个栏目,当然SQL语句基础好的同志们可以更简单方便,基础不好确恰巧遇到类似问题的同志们可以参考下,本站仅为举例,方法类似。
假如采集回来的网站内容为:
<li>A</li> <li>B</li> <li>C</li> <li>D</li> <li>E</li> <li>F</li>
而模版文件为:
<div>内容</div>
很显然,如果才寄过来的内容直接生成的话,是不符合规范的,缺少<ul></ul>标签,如果文章不是很多,我们可以手动修改,打开文章,再直接确定,编辑器会智能为你添加上<ul></ul>标签,但是如果内容很多,一篇篇修改很显然不合实际。那就需要用来后台的数据库替换菜单。
可能我们平时用DedeCMS的时候,难免会用到批量替换的功能,DedeCMS的批量替换功能,也非常好用,还能指定条件。 替换之前我们还得确定各个表分别存的是什么,dede_addonarticle就是存的普通文章内容,body就是内容字段
上面这里,就是批量替换栏目ID为15或者为30,替换文章中的dede为heliweb,但是不包括栏目ID为15的子栏目,所以我们要替换指定频道下面的文章,那这里就不好办了。唯一的问题就是没有办法知道指定频道下面的所有栏目ID。
但是我们可以换一种思路,通过其它方法先拿到,指定频道下面的所有栏目ID问题就解决了,利用DedeCMS的文档小助手方法里面的GetSonIds 方法可以获得指定栏目下面的所有子栏目,方法如下:
1、进网站后台->模板->
全局标记测试 在测试代码中输入{dede:field.id function="GetSonIds(@me)"/} ,下面环境变量处选择指定的栏目。 提交测试就能得到指定栏目的所有子栏目id.
2、拿到指定栏目下面的所有子栏目ID之后,就可以在数据库替换处,条件里面用typeid in (15,30) ,把上面拿的所有ID结果放到这括号里,就能实现了。
总结起来就是两步:
通过GetSonIds 方法获得指定栏目下面的所有子栏目。
在数据库批量替换处通过条件typeid in (栏目id) 的方法进行替换
回到举例的正题:首先我们把<li>换成<ul><li>,很显然后面的<li></li>会变成<ul><li></li>,我们再把<ul><li></li>换回成<li></li>,OK,搞定。其实举这个看似没有什么代表的例子是想告诉大家,遇到类似的问题,我们不要永远只想到1,我们可以想到2,想到3,多几次远比你批量手工要轻松。
友情提示:任何替换和修改前我们都请备份,这是一个良好的习惯。
推荐栏目
本站推荐
- 修改DEDE链接中的单引号为双引号
- DEDECMS启用绝对路径后远程缩略图存BUG
- 织梦dedecms自由列表的"不使用目录默认
- dedecms把文章批量设为未审核的办法
- 织梦调用父级栏目链接和名称
- 织梦data文件夹移动到程序上一层目录
- 优化增加搜索栏目功能后的搜索结果
- 织梦同级栏目指定文章调用实现相关文章教
- 织梦获取顶级栏目\当前栏目\上级栏目的相
- 织梦dedecms栏目添加自定义字段,增加栏
- 织梦DedeCMS自增函数[field:global name=
- dedecms织梦上传图片 缩略图路径统一
- 新增DEDE栏目页,无法更新,无权限
- 修改织梦摘要长度字数限制
- DEDECMS后台批量替换数据安全码不显示
- 织梦DEDECMS网站标签Tag静态化,生成静态
- 去掉FCK编辑器复制粘贴产生的<p>&a
- 完美解决FCK编辑器上传图片自动带DIV标签
- 去掉FCK编辑器每一段之前的空格 
- 织梦登录后台显示空白