大家应该都知道,织梦里有一个百度新闻,可以生成静态的百度新闻xml文件,如查有人不知道百度新闻是做什么的,那可以去google这里不做多的解释,反正说一句,对seo有好外,这里不得不夸一下织梦做的很细。但是程序里的“百度新闻”是半自动的不能进行实时的更新,这样就很不方便了,现在网上有很多插件可以做到。我也不能说不好,我觉得用着不舒服。下面来看一下我是怎么做的,这里是代码。
复制代码
- <?php
- require_once (dirname(__FILE__) . "/include/common.inc.php");
- $dangqianurl=$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
- if(preg_match("/=|\?|and|select/",$dangqianurl))
- {
- showmsg("禁止输入非法字符",$cfg_basehost);
- }else
- {
- header("Content-type:application/xml");
- $baidunews = "<?xml version=\"1.0\" encoding=\"".$cfg_soft_lang."\" ?>\n";
- $baidunews .= "<document>\n";
- $baidunews .= "<webSite>$cfg_webname </webSite>\n";
- $baidunews .= "<webMaster>$cfg_adminemail </webMaster>\n";
- $baidunews .= "<updatePeri>$cfg_updateperi </updatePeri>\n";
- $limit = $cfg_baidunews_limit;
- if($limit > 100 || $limit < 1)
- {
- $limit = 100;
- }
- $query = "select maintable.*, addtable.body, arctype.typename
- from #@__archives maintable
- left join #@__addonarticle addtable on addtable.aid=maintable.id
- left join #@__arctype arctype on arctype.ID=maintable.typeid
- where maintable.channel=1 and maintable.arcrank!=-1 order by maintable.pubdate desc limit $limit
- ";
- $dsql->SetQuery($query);
- $dsql->Execute();
- while($row = $dsql->GetArray())
- {
- $title = htmlspecialchars($row[‘title’]);
- $row1 = GetOneArchive($row[‘id’]);
- if(strpos($row1[‘arcurl’],’http://’) === false)
- {
- $link = ($cfg_basehost==” ? ‘http://’.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$row1[‘arcurl’];
- }else
- {
- $link = $row1[‘arcurl’];
- }
- $link = htmlspecialchars($link);
- $description = htmlspecialchars(strip_tags($row[‘description’]));
- $text = htmlspecialchars(strip_tags($row[‘body’]));
- $image = $row[‘litpic’] ==” ? ” :$row[‘litpic’];
- if($image != ” && strpos($image, ‘http://’) === false)
- {
- $image = ($cfg_basehost==” ? ‘http://’.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$image;
- }
- //$headlineimg = ”;
- $keywords = htmlspecialchars($row[‘keywords’]);
- $category = htmlspecialchars($row[‘typename’]);
- $author = htmlspecialchars($row[‘writer’]);
- $source = htmlspecialchars($row[‘source’]);
- $pubdate = htmlspecialchars(gmdate(‘Y-m-d H:i’,$row[‘pubdate’] + $cfg_cli_time * 3600));
- $baidunews .= "<item>\n";
- $baidunews .= "<title>$title </title>\n";
- $baidunews .= "<link>$link </link>\n";
- $baidunews .= "<description>$description </description>\n";
- $baidunews .= "<text>$text </text>\n";
- $baidunews .= "<image>$image </image>\n";
- //$baidunews .= "<headlineImg />\n";
- $baidunews .= "<keywords>$keywords </keywords>\n";
- $baidunews .= "<category>$category </category>\n";
- $baidunews .= "<author>$author </author>\n";
- $baidunews .= "<source>$source </source>\n";
- $baidunews .= "<pubDate>$pubdate </pubDate>\n";
- $baidunews .= "</item>\n";
- }
- echo $baidunews .= "</document>\n";
- }
- ?>
这里可以是看到,
只要把这个代码放在你的网站上就可以了,打开域名/baidu.php就是可以出来了。如果心争的朋友可以直接拿去用,但是我还相啰嗦几句做一下简单的解释.
复制代码
- require_once (dirname(__FILE__) . "/include/common.inc.php");//这里是获取你的一些配置文件
- $dangqianurl=$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];//这个是获取当前的url地址,主要是用来判断有没有被注入的,这也是我为安全想的
我想信看到上面注释的朋友,应该知道我的用意了吧
复制代码
- if(preg_match("/=|\?|and|select/",$dangqianurl))
- {
- showmsg("禁止输入非法字符",$cfg_basehost);
- }else
- {
- ///如果没有非法字符就输出xml文件也就是百度新闻
- }
还要说一点大家可以通过url重写的技术来到这个动态的文件进行伪静态。
好了到这里已经结束了。
如果你的网站符合标准,那么你可以去百度贴吧http://tieba.baidu.com/f?kw=新闻搜索申请收录,一般来说在5-7个工作日就能得到回复。要想查看自己的网站是否被百度新闻收录,可以通过执行site语法查看,直接在百度新闻搜索中输入site:你的域名,注意,是在百度新闻搜索,而不是在百度搜索,如果可以查询到结果,那你的网站就已经被百度新闻收录了。