帝国CMS自身带有文章采集功能,但跟火车头比起来,还是差太多了,而且自己已经习惯了用火车头了,所以还是想通过火车头来采集文章然后写入帝国CMS中.
火车头的自带的web在线发布模块只有帝国商品和软件模块的,没有新闻模块的,所以,要插入新闻,还是自己想办法,我用的方法是自己把采集到的数据直接写入帝国数据库中。
首先要了解帝国的数据库结构,网上关于这个的文章很多,了解之后会发现,帝国存在新闻内容在两个表ph_ecms_news和 ph_ecms_news_data_1中,帝国的ph_ecms_news存储新闻除文章正文外的所有信息,ph_ecms_news_data_1存储新闻正文,然后通过id进行关联,文章的URL地址由ph_ecms_news的两个字段newspath和filename构成,所以这两个字段不能完全一样.
现在要做的就是用sql语句按照帝国的要求把数据正确的插入到数据库中就行了.
新建数据发布模块,内容如下:
INSERTINTO`xianti360`.`ph_ecms_news` (`id`, `classid`, `onclick`, `newspath`, `keyboard`, `keyid`, `userid`, `username`, `ztid`, `checked`, `istop`, `truetime`, `ismember`, `dokey`, `userfen`, `isgood`, `titlefont`, `titleurl`, `filename`, `groupid`, `newstempid`, `plnum`, `firsttitle`, `isqf`, `totaldown`, `title`, `newstime`, `titlepic`, `closepl`, `havehtml`, `lastdotime`, `haveaddfen`, `infopfen`, `infopfennum`, `votenum`, `ftitle`, `smalltext`, `diggtop`, `stb`, `copyids`, `ttid`, `infotags`, `ispic`)VALUES(NULL, ’1′, ’0′, ’2013-2-26′, ‘[标签:标题]‘, ”, ’1′, ‘admin’, ”, ’1′, ’0′, ’0′, ’0′, ’0′, ’0′, ’0′, ”, ”, ’1′, ’0′, ’0′, ’0′, ’0′, ’0′, ’0′, ‘[标签:标题]‘, ’0′, ”, ’0′, ’0′, ’0′, ’0′, ’0′, ’0′, ’0′, ”, ‘[标签:摘要]‘, ’0′, ’1′, ”, ’0′, ”, ’0′)--phpfensi.com
update`xianti360`.`ph_ecms_news`setfilename = @@IDENTITYwhereid = @@IDENTITY
INSERTINTO`xianti360`.`ph_ecms_news_data_1` (`id`, `classid`, `writer`, `befrom`, `newstext`)VALUES(@@IDENTITY, ’1′, ”, ”, ‘[标签:内容]‘);
其中@@IDENTITY是获得最新插入的数据库的记录的ID号,通过@@IDENTITY可以实现ph_ecms_news和 ph_ecms_news_data_1的关联,同时利用@@IDENTITY的唯一性,实现了文章的URL地址,由ph_ecms_news的两个字段 newspath和filename构成,的唯一性.