帝国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语句按照帝国的要求把数据正确的插入到数据库中就行了。
新建数据发布模块,内容如下:
INSERT INTO `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’)
update `xianti360`.`ph_ecms_news` set filename = @@IDENTITY where id = @@IDENTITY
INSERT INTO `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构成)的唯一性。