欢迎各位兄弟 发布技术文章
这里的技术是共享的
[安装使用]简单实现Dedecms RSS全站输出 [复制链接] | 上一主题 下一主题 |
— 本帖被 越界 从 DedeCMS 安装使用 移动到本区(2010-08-11) — 在制作城市地摊网的 时候,我发现织梦Dedecms程序只具有各个分栏目的RSS输出功能,但这个功能不利于搜索引擎蜘蛛程序的爬行,甚至有时候会检测不到,而且不能全站 RSS输出,也非常也不利于抓虾、鲜果、飞鸽等RSS阅读会员对本网站的订阅。经过搜索,也没能找到像Wordpress、ZBLOG中那样具有整站 RSS输出功能的插件。我曾一度为无法实现这个功能而遗憾不已。后来结合网络上一些介绍,竟然成功的实现了这个RSS全站输出的功能,很是高兴,下面把方 法大致介绍一下,不是太复杂,只需要上传两个文件即可。 第一步:你先用记事本新建一个rss.php文件,把下面的代码拷贝到其中: ----------------------------------------------- <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/default/rss.htm"); header("Content-type:application/xml"); $pv->Display(); ?> ---------------------------------------------------- 之后保存文件,并将该文件上传到站点根目录下,即可。 第二步:制作一个rss.htm模板输出文件,把下面的代码拷贝到其中: ----------------------------------------------- <?xml version="1.0" encoding="utf-8" ?> <rss version="2.0"> <channel> <title>{dede:global.cfg_webname/}</title> <link>{dede:global.cfg_basehost/}</link> <description>{dede:global.cfg_description/}</description> <language>zh-cn</language> <generator>{dede:global.cfg_webname/}</generator> <webmaster>{dede:global.cfg_adminemail/}</webmaster> {dede:arclist row='60' col='1' titlelen='100' orderby='pubdate'} <item> <link>http://www.guohs.com[field:arcurl/]</link> <title><![CDATA[[field:title function='html2text(@me)'/]]]></title> <author>[field:writer/]</author> <category>[field:typename/]</category> <pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate> <guid>http://www.guohs.com[field:arcurl/]</guid> <description><![CDATA[[field:description function='html2text(@me)'/] ... <br /><b>文章分类</b>:[field:typename/]<br /><a href="http://www.guohs.com[field:arcurl/]" target="_blank">阅读全文</a> | <a href="http://www.guohs.com/plus/recommend.php?aid=[field:id/]" target="_blank">邮件推荐</a> | <a href="http://www.guohs.com[field:arcurl/]" target="_blank">评论回复</a>]]></description> </item> {/dede:arclist} </channel> </rss> ----------------------------------------------- 请将上面代码中的http://www.guohs.com替换为你的网址,保存文件并上传到和你的主页模板index.htm相同的目录下。 (PS: 这里注意,如果你的Dedecms程序系统设置是使用绝对地址的话,就要将上面代码中的http://www.guohs.com去掉。才能正确输出URL) 第三步:登陆织梦后台管理,清理缓存,然后一键更新网站,更新所有,就可以实现全站RSS输出了。RSS访问的网址就是:http://你的域名/rss.php。 第四步:修改模板目录中的head.htm中RSS订阅的地址指向为http://你的域名/rss.php即可。 第五步:如想让你的RSS更完美,并方便抓虾、鲜果、飞鸽等RSS阅读会员订阅的话,可以到feedsky.com上去申请一个帐号,然后添加一个管理,就可申请到一个永久的FEED地址,并把它设置指向你的rss.php链接:http://你的域名/rss.php 然后修改head.htm 中RSS订阅指向为:http://feed.feedsky.com/xxx 大家可以看看这个演示效果:城市地摊网-》RSS订阅 | |
来自 http://bbs.dedecms.com/261237.html
DedeCMS 自带Rss功能,在管理后台可以生成出一个Rss地图页面,默认是/data/rssmap.html;这个Html地图文件会告知用户每个栏目的rss 订阅地址,这个功能很适合栏目及文章较多的网站,但不太适合文章页不多的小型站点;我偏向于使用统一的Rss地址来输出全站所有文章,这样只需推广一个 Rss订阅地址即可。
DedeCMS Rss功能所需的程序文件是/plus/rss.php,模板文件是/templets/default/rss.html。
实现DedeCMS Rss全站静态输出的方法:
一、、在CMS根目录下中新增rss.php文件,文件代码如下:
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once (DEDEINC."/arc.partview.class.php");
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/default/rss.htm");
header("Content-type:application/xml");
$pv->Display();
?>
二、在默认模板目录(/templetes/default)中新增rss.html模板文件,文件代码如下:
<?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}" ?>
<rss version="2.0">
<channel>
<title>RSS订阅-{dede:global.cfg_webname/}</title>
<link>{dede:global.cfg_basehost/}</link>
<description>{dede:global.cfg_description/}</description>
<language>zh-cn</language>
<generator>{dede:global.cfg_webname/}</generator>
<webmaster>{dede:global.cfg_adminemail/}</webmaster>
{dede:arclist row='100' col='1' titlelen='200' orderby='pubdate'}
<item>
<link>/[field:arcurl/]</link>
<title><![CDATA[[field:title function='html2text(@me)'/]]]></title>
<author>[field:writer/]</author>
<category>[field:typename/]</category>
<pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate>
<guid>/[field:arcurl/]</guid>
<description><![CDATA[[field:description function='html2text(@me)'/]]]></description>
</item>
{/dede:arclist}
</channel>
</rss>
三、在后台增加一个单页面,“模板文件名”项中输入第2步中涉及的模板文件rss.htm,早“文件名”中输入未来Rss订阅地址,这里我就直接生成在CMS根目录下了。
四、更新一下缓存,并更新刚刚新增的单页面,即可看到全站性的RSS输出,以后很方便的就可以用各种RSS软件去Submit rss地址了。
用 DedeCMS建设企业网站,产品页面往往都会直接生成在根目录,而不会生成在栏目目录内,这样操作不仅可以使URL长度变短,而且可以实现所有页面都位 于根目录下的扁平化结构,因此,用单页发布产品信息会很普遍;上面谈及的全站性RSS输出的方法是无法提取单页的,所以还需要对rss.html的模板代 码进行修改:
<?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}" ?>
<rss version="2.0">
<channel>
<title>RSS订阅-{dede:global.cfg_webname/}</title>
<link>{dede:global.cfg_basehost/}</link>
<description>{dede:global.cfg_description/}</description>
<language>zh-cn</language>
<generator>{dede:global.cfg_webname/}</generator>
<webmaster>{dede:global.cfg_adminemail/}</webmaster>
{dede:arclist row='100' col='1' titlelen='200' orderby='pubdate'}
<item>
<link>http://www.wlxs.com.cn[field:arcurl/]</link>
<title><![CDATA[[field:title function='html2text(@me)'/]]]></title>
<author>[field:writer/]</author>
<category>[field:typename/]</category>
<pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate>
<guid>http://www.***.com[field:arcurl/]</guid>
<description><![CDATA[[field:description function='html2text(@me)'/]]]></description>
</item>
{/dede:arclist}
/********调用单页的代码********/
{dede:sql sql='Select * from dede_sgpage order by uptime asc limit 48'}
<item>
<link>http://www.***.com/[field:filename/]</link>
<title><![CDATA[[field:title function='html2text(@me)'/]]]></title>
<author></author>
<category></category>
<pubDate>[field:uptime function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate>
<guid>http://www.***.com/[field:filename/]</guid>
<description><![CDATA[[field:body function='html2text(@me)'/]]]></description>
</item>
{/dede:sql}
/********调用单页的代码********/
</channel>
</rss>
调用方式:调用后台建立的全部48个单页,并按照发布时间增序排列。
扩展说明:DedeCMS单页文档所在的数据表dede_sgpage(不修改表前缀)包括以下字段:
aid 文档号
title 文档标题
ismake 静态页面生成
filename 单页文档的文件名
keywords 单页文档的关键字
template 单页文档所用的模板
likeid 文档分类
description 单页文档的描述
uptime 文档文档生成或修改的时间
body 文档文档内容
利用上述标签,就可以修改模板里的标签代码,以调用不同的数据。
这个方法是调用单页面的通用方法,因为sql方式调用是万能的,比如:你可以在首页调用所有的单页面,或者只调用一个或某几个单页面,只需简单修改下代码即可,比如:
{dede:sql sql='Select * from dede_sgpage where aid=1'}
<div>
<ul>
<h5><a href="/[field:filename /]" title="[field:keywords /]">[field:title /]</a></h5>
<p>[field:content/]</p>
</ul>
</div>
{/dede:sql}