一、让网页显示随机排布文章标题列表的方法1(适合SQL数据库)
由于采用的是动易网站管理系统,因此便咨询了雨哲,发现这个思路是可行的,也有其他人已经写出了相应的标签,不过效率比较低,雨哲给出了简单的解决方案:
首先,在后台直接增加动态标签,查询语句为:select top 100 ArticleID,Title from PE_Article where Deleted = {$PE_False} and Status =3 order by newid() desc,如果要随机调用200篇文章,直接将top 100改为top 200即可。
其次,设置标签内容(即添加动态标签第二步的循环内容)为:{Loop}{Infobegin}{$Field(0,GetUrl,Article,3)}
{Infoend}{/Loop} 。
最后,提醒注意下,因为动态标签有缓存,生成的时候必须先更新下站点的缓存。
经过独孤天骄的实地测试,以上方案完全通过,效果很完美:)。
由于自定义标签只有sql可以使用随机标签,因此以上方案仅仅适合动易SQL版本。主要思路就是在查询语句时用newid() ,排序上使用随机来实现。
二、让网页显示随机排布文章标题列表的方法2(适合SQL数据库)
网友小码哥提供了另外一种让网页显示随机排布的文章标题列表的方法,让网站页面上显示出的文章标题列表能够随着页面的不时刷新,同时也发生变化。 这个方案可以细致到某个频道的某个栏目的随机文章:
步骤也很简单:
1、添加标签:{$MY_产生本月某栏目随机文章}。这里的标签名称可以自定义。
2、查询语句写为:select top 10 ArticleID,ClassID,Title,UpdateTime from PE_Article where ChannelID ={input(0)} and DateDiff(day,UpdateTime,getdate())<30 and Deleted=0 and Status=3 Order by newid()
3、标签内容写为:
{Loop}{Infobegin}
{$Field(2,Text,22,2,1)}
{Infoend}{/Loop}
4、模板调用
在网页需要位置写入{$MY_产生本月某栏目随机文章(1002)},其中1002对应的就是我们的动易频道ID,可以根据自己实际修改。查询语句中 DateDiff(day,UpdateTime,getdate())<30中的“30”是查询一个月内的文章,这个数值可以根据网站自己实际情况做调整。
三、让网页显示随机排布文章标题列表的方法3(适合ACCESS数据库)
需要注意的是,以上独孤天骄和网友小码哥给出的两种解决方案都仅可以应用于SQL数据库,不适合AC数据库。如果您采用的是动易ACCESS版的随机文章列表,可以参见网友arko提供的技术解决方案:
首先,需要注意的是,这时在后台自定义标签管理里新建的是一个函数标签,标签名称可以命名为{$MY_随机文章}。
查询语句设置为:(“top10”中的10是要查询的文章数,可以自己改,但不建议修改得太大;如果不想按栏目调用,而是调用某一个频道下的文章,那么可以把ChannelID in ({input(0)}) and ClassID in ({input(1)}) 修改为:ChannelID in ({input(0)}) ,相应的,调用标签就是:{$MY_随机文章(频道ID)}了 ;“DateDiff("d",date(),UpdateTime)<7”中的7是指查询最近7天的文章,根据需要修改;)
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}
其次,在模板里适当位置加入{$MY_随机文章(频道ID,栏目ID)}即可进行调用,其中频道ID、栏目ID可以根据自己实际进行修改。
需要注意的是,好的效果是在损失性能的前提下实现的,不比SQL数据库的动态标签,这个标签的代码效率很低,虽然标签保证了随机性,如果是生成静态的,那生成的每个页面都不一样,每次生成也都不一样。但是虚拟主机用户当CPU峰值小于5%的时候,而你又要生成静态页面的话,生成文章超过700篇就有可能造成进程当机了。建议在生成大量静态页面的时候,寻找访客较少的时候进行,并且一次尽量少生成一些。也可以修改动易安装目录下的Config.asp文件:
Const MaxPerPage_Create = 10 '一次生成的数量,把他改小一些,Const SleepTime = 3 '生成的间隔时间,把他改大一些。