内容批量加入DedeCMS

WhatsApp 聊天记录保险【99元/年】,聊天记录不怕丢。

WhatsApp 免墙、翻译、多开、号码抓取、群发【99元/年】

最近采集了不好的内容,数据库都上G了。以前一直用的方式是自己写个网站,通过自己的程序来调用自己采集的内容。这样一个好处就是自己了解全部的数据结构,调用起来非常方便。但缺点也很明显,最大的问题就是界面的美工问题,程序出生的我对于美工实在是没什么研究,一个网站界面已经用在了N多网站上,看的我自己都烦了。还有个问题就是自己写的程序难免会出这样那样的问题,自己处理起来浪费了不少时间。所以,灵机一动,想到了DedeCMS。如果把我采集的内容添加到Dede的数据库中,岂不是两全其美,数据也有了,网站也有了。

不过把数据添加到Dede中还真不少件容易的事,Dede后台的数据表非常多。其中跟文章相关的表有两个,addonarticle和archives,和tags相关的表有两个tagindex和taglist。这四个表就是Dede存储文章和文章对应的tags信息的表。只要这四个表修改对了,就能达到和在dede后台添加文章一样的效果。所以的研究这几个表中每个字段都代表什么意思,其他三个都比较简单,最复杂的就是archives这个表了,字段数非常多,有三十多个。一看这么多字段,我头都大了。所以又冒出来一个思路,用python或php写一个脚本,直接将数据post到dede的article_add.php上,借用article_add.php完成数据的添加。结果自己用php的curl搞了半天,可怎么也post不进去数据,也不知道什么原因。难度太大,只能放弃了。

现在只有一条路了,分析Dede的数据库结构,自己写一段php程序,把数据加进去。这时候又想到了火车头的那个Dede文章发布模块,打开研究了一下,突然发现了有一段说明挺有用的,如下:

默认参数:
notpost=1      允许评论,0为不允许.
channelid=1    为频道ID,1为文章频道
remote=0       下载远程图片和资源,1为下载
dellink=1      删除非站内链接,1为删除
autolitpic=0   提取第一个图片为缩略图,1为提取
autokey=1      自动获取关键词,1为自动获取
sptype=auto    自动分页,手动为hand
spsize=3       自动分页大小,3千字
money=0        消费点数,值为数字
ishtml=1       为静态发布,改为0为动态浏览
sortup=0       文档置顶天数,可选0,7,30,90,180,360,单位是天
arcrank=0      阅读权限,0为开放浏览
—————————————————————-
可选参数:
—————————————————————-
redirecturl    跳转网址,
tags           TAG,用空格或’,’分开
litpic         缩略图
picname        图片名
dede_addonfields 附加表的字段
shorttitle     简略标题
color          标题颜色,默认为空
description    文档摘要
keywords       关键字
source         出处
writer         作者
filename       自定义文件名
—————————-
其它说明:
—————————-
模块里的时间取的是系统时间戳,如果不添加时间,取的是当前时间.如果你弄的时间格式出错,发布后发布时间就会变成1970年的.对于可选参数,你可以选择添加,根据自己需要,修改相关参数.

对照上面的说明,基本上就可以看明白archives表中各个字段的含义了。然后分析了一下前面提到的article_add.php,看看Dede是怎么把数据加入数据库的,然后依葫芦画瓢,就写出了自己能用的php代码。代码如下,供参考学习。php文件位置在Dede的根目录下。

<?php
set_time_limit(0);
require_once(‘dede/config.php’);
require_once(“include/common.func.php”);
require_once(“include/archives.func.php”);
require_once(“dede/inc/inc_archives_functions.php”);

$con = mysql_connect(“localhost”,”root”,””);
if (!$con){
die(‘Could not connect: ‘ . mysql_error());
}
mysql_query(‘set names UTF8’);
mysql_select_db(“database”, $con);

$results = mysql_query(“SELECT * FROM 我的数据表 where title like ‘%目录名称%'”);
while($rows = mysql_fetch_array($results)){
$id = $rows[‘id’];
$title = $rows[‘title’];
$body = $rows[‘content’];
$kid = $rows[‘kid’];

$result = mysql_query(“SELECT * FROM 数据表对应的tags表 where id = “.$kid);
while($row = mysql_fetch_array($result)){
$tags = $row[‘skey’];
}

echo $title;

$notpost = 0;
$typeid = 1; //目录Id,文章将被提取到这个目录下
$channelid =1;

if(empty($typeid2)) $typeid2 = ”;
if(!isset($autokey)) $autokey = 0;
if(!isset($remote)) $remote = 0;
if(!isset($dellink)) $dellink = 0;
if(!isset($autolitpic)) $autolitpic = 0;
if(empty($click)) $click = ($cfg_arc_click==’-1′ ? mt_rand(50, 200) : $cfg_arc_click);

if(empty($typeid)){
ShowMsg(“请指定文档的栏目!”,”-1″);
exit();
}
if(empty($channelid)){
ShowMsg(“文档为非指定的类型,请检查你发布内容的表单是否合法!”,”-1″);
exit();
}

//对保存的内容进行处理
if(empty($writer))$writer=’admin’;
if(empty($source))$source=’未知’;
$pubdate = GetMkTime($pubdate);
$senddate = time();
$sortrank = AddDay($pubdate,$sortup);
$ismake = 1;//静态化html
$title = ereg_replace(‘”‘, ‘"’, $title);
$title = htmlspecialchars(cn_substrR($title,200));
$shorttitle = cn_substrR($shorttitle,36);
$color =  cn_substrR($color,7);
$writer =  cn_substrR($writer,20);
$source = cn_substrR($source,30);
$description = cn_substrR($description,$cfg_auot_description);
$keywords = cn_substrR($keywords,60);
$filename = trim(cn_substrR($filename,40));
$userip = GetIP();
$isremote  = (empty($isremote)? 0  : $isremote);
$serviterm=empty($serviterm)? “” : $serviterm;
$arcrank = 0;//开发阅读,不是0,文章就在前台看不见
$adminid = 1;

//处理上传的缩略图
if(empty($ddisremote)){
$ddisremote = 0;
}

$litpic = GetDDImage(‘none’, $picname, $ddisremote);

//生成文档ID
$arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
echo $arcID ;

if(empty($arcID)){
ShowMsg(“无法获得主键,因此无法进行后续操作!”,”-1″);
exit();
}
if(trim($title) == ”){
ShowMsg(‘标题不能为空’, ‘-1′);
exit();
}

//处理body字段自动摘要、自动提取缩略图等
$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);

//数据插入到数据库中
$query = “INSERT INTO de_archives(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,weight)
VALUES (‘$arcID’,’$typeid’,’$typeid2′,’$sortrank’,’$flag’,’$ismake’,’$channelid’,’$arcrank’,’$click’,’$money’,
‘$title’,’$shorttitle’,’$color’,’$writer’,’$source’,’$litpic’,’$pubdate’,’$senddate’,
‘$adminid’,’$notpost’,’$description’,’$keywords’,’$filename’,’$adminid’,’$weight’);”;

$result = mysql_query($query);
if($result) echo “archives ok “;

$query = “INSERT INTO de_addonarticle(aid,typeid,body,userip) VALUES (‘$arcID’, ‘$typeid’, ‘$body’, ‘$userip’)”;
$result = mysql_query($query);
if($result) echo “addonarticle ok<br />”;

InsertTags($tags,$arcID); // 插入tag标签
}
mysql_close($con);
?>

微信扫一扫 或 点击链接加好友

仍有疑问,点击 链接,加个 微信 好友,一起交流。

《内容批量加入DedeCMS》有17条评论

  1. 文章里有我想要了解的东西,不错,多建几个网站正是我正在给公司划分的事,

  2. 不错. 如果加入定时 定量控制function就完美了.

发表评论