织梦dedecms全站rss输出

  织梦Dedecms建站程序并没有内置好全站RSS输出功能,需要会员、使用者自主制作,这对于初学者来说是有一定难度的,如果用织梦Dedecms搭建的网站不能全站RSS输出,将不利于搜索引擎的收录,也不利于网站被抓虾、鲜果、飞豆、飞鸽等RSS阅读网站会员的订阅。当然,织梦Dedecms具有各频道的RSS输出功能,但这是很笨的RSS功能,对于稍为迟钝点的搜索引擎来说,可能检测不到。
  
  我想,估计织梦Dedecms程序开发员,以为全站RSS输出功能是很容易制作的,于是并没有像Wordpress、ZBLOG等于内核加插整站RSS输出功能。我曾为这一功能的开设搜遍了互联网,最初都是些极为复杂的方法介绍,可行性极差。后来发现有一种方法很管用,只加插上传两个文件就实现啦。这里分享一下我开设织梦Dedecms全站输出功能的经过:
  
  第一步,你先用记事本新建一个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.php文件的朋友,可[点此]下载已经建好的文件,将解压后的文件rss.php,直接保存该文件到站点根目录下,即可。
  
  第二步,制作一个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.iwojie.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.iwojie.com[field:arcurl/]</guid>

<description><![CDATA[[field:description function=’html2text(@me)’/] … <br /><b>文章分类</b>:[field:typename/]<br /><a href="http://www.iwojie.com[field:arcurl/]" target="_blank">阅读全文</a> | <a href="http://www.iwojie.com/plus/recommend.php?aid=[field:id/]" target="_blank">邮件推荐</a> | <a href="http://www.iwojie.com[field:arcurl/]" target="_blank">评论回复</a>]]></description>

</item>

{/dede:arclist}

</channel>

</rss>

  

  请将上面代码中http://www.iwojie.com的网址替换为你的网址,保存文件、上传到index.htm主页模板相同的目录/templets/default中

  

  完成上面步骤之后,登陆管理后台,清理一下缓存,重新生成一遍全站文件就可以实现全站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/iwojie (这是我的网站rss,你要改成你的)

DEDE织梦默认模板代码优化彻底提升网页打开速度

排除主机和宽带因素,DEDE默认模板访问速度过慢,经查证这和顶部JS调用以及代码冗余有关。

 

事实上网站程序的优化多数原则是代码简练,减少JS调用等。这里分别从主页、文章列表页、文章内容页来分别介绍DEDE默认模板优化,经测试,优化后,网站速度有极大提升,如果再有一个好的主机,那你的网站也能有腾讯、网易那样的访问速度。

 

一、主页模板(index.htm)

 

下面的JS文件和JS代码可以根据需要情况看是否需要删除,最好能全部删除,但是全部删除会影响一些功能,比如会员登录状态、图文资讯的滚动等,这里个好的方法,就是把所有这里的JS写入一个单独的文件,这样调用时只需要一次就可以了,注意调用的路径。

 

JS文件解释说明

/js/jquery.cookie.js
主要的作用记录换肤功能的cookies,用于保留用户的选择;

 

/js/changeSkin.js
用于换肤功能的具体实现代码;

 

/js/pic_scroll.js
“图文资讯”滚动的地方;

 

/images/js/j.js
经过压缩后的java代码,主要作用是在默认模板中的中间部分的横向滚动的“图片资讯”的地方;
同时,换肤功能也和该功能有关联

 

/include/dedeajax2.js
引入DedeCMS 的ajax框架,作用主要是在模板中的一些特效,比如登陆后改变登陆状态、内容页顶与踩、评论列表的支持与反对等等(如果您不需要上述功能,这段代码可以删除);

 

Javascript代码

 

function CheckLogin(){   
  var taget_obj = document.getElementById(‘_userlogin’);   
   myajax = new DedeAjax(taget_obj,false,false,”,”,”);   
   myajax.SendGet2("{dede:global.cfg_cmspath/}/member/ajax_loginsta.php");   
   DedeXHTTP = null;   
}  
主要用途是判断会员是否登录,如果已经登录,则在互动中心的会员框里显示/member/ajax_loginsta.php登陆后的内容;

 

$(function(){   
$("dl.tbox dt span.label a[_for]").mouseover(function(){   
   $(this).parents("span.label").children("a[_for]").removeClass("thisclass").parents("dl.tbox").children("dd").hide();  
   $(this).addClass("thisclass").blur();   
   $("#"+$(this).attr("_for")).show();   
});   
$("a[_for=uc_member]").mouseover();   
});  
主要用途是首页右侧的互动中心中踩踩、评论、会员三个选项的切换效果;

 

function multi(pagenum,tagid)   
{   
  var taget_obj = document.getElementById(tagid);   
  var taget_obj_page = document.getElementById("page_"+tagid);   
   myajax = new DedeAjax(taget_obj,false,false,”,”,”);   
   myajax.SendGet2("/plus/arcmulti.php?mtype=0&pnum="+pagenum+’&tagid=’+tagid);   
   myajax = new DedeAjax(taget_obj_page,false,false,”,”,”);   
   myajax.SendGet2("/plus/arcmulti.php?mtype=1&pnum="+pagenum+’&tagid=’+tagid);   
   DedeXHTTP = null;   
}  
主要用途是右侧的推荐内容分页,也是DedeV5.6版的新增功能(arclist标签分页);P.s:其实默认的ajax评论也是通过此种方式制作的。

 

function check(){   
    if(document.formsearch.searchtype.value=="")   
     document.formsearch.action="http://www.google.cn/custom"  
    else  
     document.formsearch.action="{dede:field name=’phpurl’/}/search.php"  
}   
作用是顶部的goole搜索那,具体的含义,当我们选择的搜索类型(searchtype)为空,那么提交的目标地址就是http://www.google.cn/custom,否则就提交到站内搜索的地址/plus/search.php!

 

二、默认文章列表模板(list_article.htm)

 

这里顶部的JS全部去掉就可以了,这样就可以大大提高访问速度了。

 

三、文章内容页模板(article_article.htm)

 

这是目前为止最好的DEDE文章内容页因点击次数引起网页加载慢的解决方法

 

下面代码放在要显示文章点击词素的位置(红色部分是未显示广告之前显示的内容,可以是文字或是图片,当然不要也行)

 

<span id=vvclick>  加载中  </span>

 

当然“加载中”也可以替换为图片

 

下面的代码放到网页最底部最好放在</html>之前(蓝色部分是点击次数代码)

 

<SPAN class=spanclass id=span_vvclick>

<script src="{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}&mid={dede:field name=’mid’/}" type=’text/javascript’ language="javascript"></script> </SPAN>

<SCRIPT>vvclick.innerHTML=span_vvclick.innerHTML;span_vvclick.innerHTML="";</SCRIPT>

 

原理: 由于网页是由上往下执行代码,所以前面会暂时显示 "点击次数载入中…" 等到执行完整个页面后, 前面才会调用出来。所以我们把点击次数的代码这些放到最后执行让前面调用, 就不会影响站点页面中正常的内容输出的速度了。这也是网上最经典的广告最后加载代码了,提供给大家使用!

 

还有就是顶部的JS调用的处理方法同前面主页JS的处理方法相同,删除部分JS,删除的时候要特别注意是否影响了其他功能。最好的方法是写入一个文件,另存为,最后只调用一次。注意调用的路径。

1、在dedecms文章模板中的头部。放着一大堆的Javascript,浏览每个页面都需要加载…这样反复下去很浪费加载时间。应该对其优化一下,具体方法为:将这段JS提取出来,另存为一个文件,以后只要下载一次就可以了,不过注意要把JS里的路径根据自己的情况替换一下。(可以保存在模板下的JS目录下,这样就可以用 src=”{dede:global.cfg_templets_skin/}/js/*.js调用)

2、对点击次数的优化:系统默认是用<script src=”{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}&mid={dede:field name=’mid’/}” type=’text/javascript’ language=”javascript”></script>这样的方面调用的,但有时候容易卡着。 加入JS函数进行调用,具体操作如下:

找开article_article.htm,找到点击次数的代码就是上面那句:

<script src="{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}&mid={dede:field name=’mid’/}" type=’text/javascript’ language="javascript"></script>
替换成:

<span id="article_click"></span>
在页面调用的JS文件里面(可以是上面保存的那个)加入函数:

function getClick(aid,mid)
{
var taget_obj = document.getElementById(‘article_click’);
myajax = new DedeAjax(taget_obj,false,false,”,”,”);
myajax.SendGet2("/plus/count.php?ajax=yes&mid=" +mid +"&aid=" +aid); //这里要根据情况改成网站的实际路径
DedeXHTTP = null;
}3、对DIGG评论的优化:

修改plus/count.php文件,在exit()之前加入以下的代码:

if(!empty($ajax))
{
$row = $dsql->GetOne(" Select click From `{$maintable}` where {$idtype}=’$aid’ ");
if(is_array($row))
{
echo $row[‘click’];
}
}把<script language=”javascript” type=”text/javascript”>getDigg({dede:field.id/});</script>改为:

<script language="javascript" type="text/javascript">getClick({dede:field name=’id’/},mid={dede:field name=’mid’/});getDigg({dede:field.id/});</script>
其实getClick这个函数只要放在文章后面,哪里都无所谓!再试下效果~~

修改织梦DedeCms文章页默认title的方法

DedeCms文章页的默认title结构是:“文章标题_网站名称”。

如果您不喜欢这类命名方式,喜欢“文章标题_栏目页_网站名称”、“文章标题_二级栏目_一级栏目_网站名称”这类的命名方式,可以将下列代码替换到模板文件article_article.htm,替换<title></title>标签之间的{dede:field.title/}_{dede:global.cfg_webname/},即可实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

{dede:field name=’title’/}_{dede:field name=’position’ runphp=’yes’}

$tc="_"; //分隔符

$tw=$GLOBALS[‘cfg_list_symbol’]; //调用位置分隔符

@me=html2text(@me); //去除html标签

$tf=split($tw,@me); //分解成数组

for($ta=(count($tf)-2);$ta&gt;=1;$ta–){ //循环赋值给$tk

$tk.=trim($tf[$ta]).$tc;

}

$tk=substr($tk,0,-1);

@me=$tk; //赋值给@me

{/dede:field}_{dede:global name=’cfg_webname’/}

然后再重新生成所有页面。

修改织梦DedeCms文章页默认title的方法

DedeCms文章页的默认title结构是:“文章标题_网站名称”。

如果您不喜欢这类命名方式,喜欢“文章标题_栏目页_网站名称”、“文章标题_二级栏目_一级栏目_网站名称”这类的命名方式,可以将下列代码插入到模板文件article_article.htm,<title></title>标签之间,即可实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

{dede:field name=’title’/}_{dede:field name=’position’ runphp=’yes’}

$tc="_"; //分隔符

$tw=$GLOBALS[‘cfg_list_symbol’]; //调用位置分隔符

@me=html2text(@me); //去除html标签

$tf=split($tw,@me); //分解成数组

for($ta=(count($tf)-2);$ta&gt;=1;$ta–){ //循环赋值给$tk

$tk.=trim($tf[$ta]).$tc;

}

$tk=substr($tk,0,-1);

@me=$tk; //赋值给@me

{/dede:field}_{dede:global name=’cfg_webname’/}

然后再重新生成所有页面。

织梦DedeCms列表页文章缩略图设置,有就显示,没有不显示

不少用织梦建站朋友想实现这个功能,有时候未必偏偏文章都会配有图片,所以就想实现有缩略图则显示缩略图,无则不显示图片。

可以按照下面这个方法修改实现。

编辑打开/templets/default/list_article.htm (这是默认模板)

搜索下面这段代码

1

[field:array runphp=’yes’]@me = (empty(@me[‘litpic’]) ? "" : "<a class="preview" href="{@me["><img src="{@me[" alt="" /></a>"); [/field:array]

将其替换为

1

[field:array runphp=’yes’]@me = (strpos(@me[‘litpic’],’defaultpic’) ? "" : "<a href='{@me[‘arcurl’]}’ class=’preview’><img src='{@me[‘litpic’]}’/></a>"); [/field:array]

然后再重新生成一遍列表页。