国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > DedeCMS > 动易SiteWeaver如何实现随机文章功能

动易SiteWeaver如何实现随机文章功能

来源:程序员人生   发布时间:2013-11-11 02:15:13 阅读次数:2368次
  网(LieHuo.Net)教程 动易SiteWeaver本身没有提供生成随机文章列表的功能,也没有相关的插件,要实现这个功能只能使用动易的自定义标签了,下面提供两种版本,Access版的和SQL版的,SQL版的是引用动易论坛小码哥所写的。

  在页面中添加一个随机文章列表的好处是降低站内页面相似度,避免对搜索引擎将页面当做复制页面来处理。那么要实现的功能是:输出一个随机文章列表,每次生成HTML页面时,列表都不相同,每个页面的列表也各不相同,当然,如果不生成静态的话,那么每次刷新页面,列表也会变化。

  一、动易SiteWeaver+SQL数据库实现随机文章列表:

  在后台自定义标签管理里新建一个函数标签:

  标签名称:{$MY_随机文章} -可自定义标签名称

  查询语句:select top 10 ArticleID,ClassID,Title,UpdateTime from PE_Article where ChannelID in ({input(0)}) and ClassID in ({input(1)}) and DateDiff(day,UpdateTime,getdate())<7 and Deleted=0 and Status=3 Order by newid()

  标签内容:{Loop}{Infobegin}{$Field(2,Text,22,2,1)}{Infoend}{/Loop}

  调用方法:在模板里适当位置加入:{$MY_随机文章(频道ID,栏目ID)}即可,频道ID,栏目ID根据自己实际修改。

  说明:

  1、select top 10.... 中的10是要查询的文章数,可以自己改,但建议不要改的太大。

  2、如果不想按栏目调用,而是调用某一个频道下的文章,那么可以把ChannelID in ({input(0)}) and ClassID in ({input(1)}) 修改为:ChannelID in ({input(0)}) ,相应的,调用标签就是:{$MY_随机文章(频道ID)}了。

  3、DateDiff(day,UpdateTime,getdate())<7....中的7是指查询最近7天的文章,根据你的需要修改。

  二、动易SiteWeaver+Access数据库实现随机文章列表:

  在后台自定义标签管理里新建一个函数标签:

  标签名称:{$MY_随机文章}-可自定义标签名称

  查询语句:select top 10 ArticleID,ClassID,Title,UpdateTime from PE_Article where ChannelID in ({input(0)}) and ClassID in ({input(1)}) and DateDiff("d",date(),UpdateTime)<7 and Deleted={$PE_False} and Status=3 Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2);

  标签内容:{Loop}{Infobegin}{$Field(2,Text,44,2,1)}{Infoend}{/Loop}

  调用方法:同上。

  说明:同上。

  在access中实现随机真是太麻烦了,这个标签的核心句子是:Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2)这一句,在SQL中一个函数就能实现的东西在access中却要套这么多层,不过这个句子保证了随机性,具体效果可以看我这个栏目下的文章页。

  要说明的是:好的效果实在损失性能的前提下实现的,这句代码效率很低,所以如果生成大量静态页面,建议在访客较少的时候进行。一次尽量少生成一些,或者你也可以修改动易安装目录下的Config.asp文件中的:

  Const MaxPerPage_Create = 10 '一次生成的数量,把他改小一些。

  Const SleepTime = 3 '生成的间隔时间,把他改大一些。

  又或者你不是很在乎每篇文章的随机性,那么你可以精简“Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2) ”,期待高手写出效率更高的句子,或者直接写个插件出来,呵呵。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生