如何批量替换指定栏目内容代码

时间:2015-11-04 13:59 / 来源:未知 / 作者:酱油 / 点击:

早前采集某站,因为对方网站代码和本站有一点细微的差别,可是本站又存在多个栏目使用该模版,所以需要批量替换全站代码显然会有些许问题,所以只能指定替换某个栏目,当然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,多几次远比你批量手工要轻松。

友情提示:任何替换和修改前我们都请备份,这是一个良好的习惯。

猜你喜欢

推荐栏目

DEDECMS
DEDECMS

DEDE使用经验和技巧

WordPress
Wordpress

WP使用经验和技巧

Zblog
Zblog

Zblog使用经验和技巧

CSS
CSS

CSS使用经验和技巧

网络资料
网络资料

转载实用网络资料

按键伤人
按键伤人

转载乱七八糟的网络资源

我是酱油
我是酱油

随笔札记 记录生活点滴

本站推荐

百度站内搜索

专业博客主机