Z-Blog 1.8 Walle 下载Dutory 0.3 Gromit 发布PJBlog2 to Z-Blog数据库转换程序Wordpress数据导入插件 for 1.8
Z-BLOG使用小贴士收集如何配置Z-Blog高阶学习手册Windows Live Writer支持插件 
返回列表 回复 发帖

better feeds 修改方案 for 1.7 Laputa

关于什么是better feeds 以及 better feeds 的1.6版本可参考这里:
http://bbs.rainbowsoft.org/viewthread.php?tid=845&highlight=feed
不过1.7版本下不能使用了,可行的修改方法如下:

打开c_system_event.asp文件,找到Function ExportRSS()函数,如果是全文RSS,就将objArticle.HtmlContent替换为objArticle.HtmlContent +getRelateList(objArticle.ID,objArticle.Tag),如果是摘要输出,则替换 objArticle.HtmlIntro。最后,在c_system_event.asp文件尾部加入以下代码即可。
  1. '*********************************************************
  2. ' 目的:相关文章的生成,用于优化Feed
  3. '*********************************************************
  4. Function getRelateList(intID,strTag)
  5. If (intID=0) Then Exit Function
  6. If strTag<>"" Then

  7.    Dim strCC_Count,strCC_ID,strCC_Name,strCC_Url,strCC_PostTime,strCC_Title
  8.    Dim strCC
  9.    Dim i
  10.    Dim j
  11.    Dim objRS
  12.    Dim strSQL

  13.    Dim strOutput
  14.    strOutput=""

  15.    Set objRS=Server.CreateObject("ADODB.Recordset")

  16. strSQL="SELECT top 10  [log_ID],[log_Tag],[log_CateID],[log_Title],[log_Intro],[log_Level],[log_AuthorID],[log_PostTime],[log_Url] FROM [blog_Article] WHERE ([log_Level]>2) AND [log_ID]<>"& intID &" "

  17.    strSQL = strSQL & " AND ("

  18.    Dim aryTAGs
  19.    strTag=Replace(strTag,"}","")
  20.    aryTAGs=Split(strTag,"{")

  21.                         For j = LBound(aryTAGs) To UBound(aryTAGs)
  22.                                 If aryTAGs(j)<>"" Then
  23.                                         strSQL = strSQL & "([log_Tag] Like '%{"&aryTAGs(j)&"}%')"
  24.                                         If j=UBound(aryTAGs) Then Exit For
  25.                                         If aryTAGs(j)<>"" Then strSQL = strSQL & " OR "
  26.                                 End If
  27.                         Next

  28.    strSQL = strSQL & ")"
  29.    strSQL = strSQL + " ORDER BY [log_PostTime] DESC "

  30.    Set objRS=Server.CreateObject("ADODB.Recordset")
  31.    objRS.CursorType = adOpenKeyset
  32.    objRS.LockType = adLockReadOnly
  33.    objRS.ActiveConnection=objConn
  34.    objRS.Source=strSQL
  35.    objRS.Open()
  36.    If (Not objRS.bof) And (Not objRS.eof) Then
  37.   
  38.     For i=1 To 5 '相关文章数目,可自行设定
  39. Dim objArticle
  40. Set objArticle=New TArticle

  41. If objArticle.LoadInfoByArray(Array(objRS("log_ID"),objRS("log_Tag"),objRS("log_CateID"),objRS("log_Title"),"","",objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),"","","",objRS("log_Url"),"")) Then

  42.                                                 strCC_Count=strCC_Count+1
  43.                                                 strCC_ID=objArticle.ID
  44.                                                 strCC_Url=objArticle.Url
  45.                                                 strCC_PostTime=objArticle.PostTime
  46.                                                 strCC_Title=objArticle.Title

  47.                                                 Application.Lock
  48.                                                 strCC=Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_Mutuality")
  49.                                                 Application.UnLock

  50.                                                 strCC=Replace(strCC,"<#article/mutuality/id#>",strCC_ID)
  51.                                                 strCC=Replace(strCC,"<#article/mutuality/url#>",strCC_Url)
  52.                                                 strCC=Replace(strCC,"<#article/mutuality/posttime#>",strCC_PostTime)
  53.                                                 strCC=Replace(strCC,"<#article/mutuality/name#>",strCC_Title)
  54.       strOutput=strOutput & strCC
  55.           
  56.           end if
  57.       Set objArticle=nothing
  58.      objRS.MoveNext
  59.      If objRS.eof Then Exit For
  60.     Next

  61.    End if

  62.    objRS.Close()
  63.    Set objRS=Nothing
  64.   End If

  65. strOutput=Replace(strOutput,vbCrlf,"")
  66. getRelateList="<br/>--------------------<br/>相关文章:<ul>" + strOutput + "</ul>  "

  67. End Function
  68. %>
复制代码
如果想要加入评论也可以,可参考1.6版本下zx.mys的跟贴,最好其本人能补充一下,hoho

[ 本帖最后由 debugger 于 2007-3-3 00:00 编辑 ]
-_- 晕~"其本人在此"...还是不幸给你点到名了~
加评论链接的代码在此:
  1. '*********************************************************
  2. ' 目的:优化Feed
  3. '*********************************************************
  4. Function getRelateList(intID,strTag,strTitle,strURL)
  5. If (intID=0) Then Exit Function
  6. If strTag<>"" Then

  7.    Dim strCC_Count,strCC_ID,strCC_Name,strCC_Url,strCC_PostTime,strCC_Title
  8.    Dim strCC
  9.    Dim i
  10.    Dim j
  11.    Dim objRS
  12.    Dim strSQL

  13.    Dim strOutput
  14.    strOutput=""

  15.    Set objRS=Server.CreateObject("ADODB.Recordset")

  16. strSQL="SELECT top 10  [log_ID],[log_Tag],[log_CateID],[log_Title],[log_Intro],[log_Level],[log_AuthorID],[log_PostTime],[log_Url] FROM [blog_Article] WHERE ([log_Level]>2) AND [log_ID]<>"& intID &" "

  17.    strSQL = strSQL & " AND ("

  18.    Dim aryTAGs
  19.    strTag=Replace(strTag,"}","")
  20.    aryTAGs=Split(strTag,"{")

  21.                         For j = LBound(aryTAGs) To UBound(aryTAGs)
  22.                                 If aryTAGs(j)<>"" Then
  23.                                         strSQL = strSQL & "([log_Tag] Like '%{"&aryTAGs(j)&"}%')"
  24.                                         If j=UBound(aryTAGs) Then Exit For
  25.                                         If aryTAGs(j)<>"" Then strSQL = strSQL & " OR "
  26.                                 End If
  27.                         Next

  28.    strSQL = strSQL & ")"
  29.    strSQL = strSQL + " ORDER BY [log_PostTime] DESC "

  30.    Set objRS=Server.CreateObject("ADODB.Recordset")
  31.    objRS.CursorType = adOpenKeyset
  32.    objRS.LockType = adLockReadOnly
  33.    objRS.ActiveConnection=objConn
  34.    objRS.Source=strSQL
  35.    objRS.Open()
  36.    If (Not objRS.bof) And (Not objRS.eof) Then
  37.   
  38.     For i=1 To 5 '相关文章数目,可自行设定
  39. Dim objArticle
  40. Set objArticle=New TArticle

  41. If objArticle.LoadInfoByArray(Array(objRS("log_ID"),objRS("log_Tag"),objRS("log_CateID"),objRS("log_Title"),"","",objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),"","","",objRS("log_Url"),"")) Then

  42.                                                 strCC_Count=strCC_Count+1
  43.                                                 strCC_ID=objArticle.ID
  44.                                                 strCC_Url=objArticle.Url
  45.                                                 strCC_PostTime=objArticle.PostTime
  46.                                                 strCC_Title=objArticle.Title

  47.                                                 Application.Lock
  48.                                                 strCC=Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_Mutuality")
  49.                                                 Application.UnLock

  50.                                                 strCC=Replace(strCC,"<#article/mutuality/id#>",strCC_ID)
  51.                                                 strCC=Replace(strCC,"<#article/mutuality/url#>",strCC_Url)
  52.                                                 strCC=Replace(strCC,"<#article/mutuality/posttime#>",strCC_PostTime)
  53.                                                 strCC=Replace(strCC,"<#article/mutuality/name#>",strCC_Title)
  54.       strOutput=strOutput & strCC
  55.          
  56.           end if
  57.       Set objArticle=nothing
  58.      objRS.MoveNext
  59.      If objRS.eof Then Exit For
  60.     Next

  61.    End if

  62.    objRS.Close()
  63.    Set objRS=Nothing
  64.   End If
  65. strOutput=Replace(strOutput,vbCrlf,"")
  66. getRelateList= "<br/><br/><br/><a href="""+strURL+"#comment"" target=""_blank"">《"+strTitle+"》这篇文章挺有意思的,我也想来评论两句</a>"
  67. IF strOutput<>"" then
  68. getRelateList=  getRelateList+"<br/>----<br/>相关文章:<ul>" + strOutput + "</ul>  "
  69. end if
  70. End Function
复制代码
打开c_system_event.asp文件
找到Function ExportRSS函数
(摘要输出)把原有objArticle.HtmlIntro改为
objArticle.HtmlIntro+getRelateList(objArticle.ID,objArticle.Tag,objArticle.Title,objArticle.URL)
(全文输出)把原有objArticle.HtmlContent改为
objArticle.HtmlContent+getRelateList(objArticle.ID,objArticle.Tag,objArticle.Title,objArticle.URL)

还有哦,我觉得把这种BETTER FEED叫做插件不太好,应该叫做源码修改.~

[ 本帖最后由 Zx.MYS 于 2007-3-10 00:20 编辑 ]
[AD]:个人BLOG:思想碎片@Zx.MYS
[说明]:1.有事请发帖,论坛短消息已禁用。2.写Z-Blog程序的不是我,是另外一个zx。

有疑问

感谢二位老大的辛勤劳动 只是我在使用过程中遇到了一点小小的麻烦,就是在RSS阅读器里feed的相关文章是显示出来了,但生成的地址比如 http://www.gandalf2006.com/post/13,后面就少了.html,真是让人百思不得其解

回复 #3 hotsky 的帖子

的确是这样,原文程序有点问题,现在已经修正,已经支持自定义目录和匿名路径下的相关文章生成,多谢提醒。
谢谢老大
好,谢谢
十分感谢!
管理页面
HTTP 500 - 内部服务器错误

怎么回事啊??
从网页复制代码有空格,问题已解决,再次感谢楼主!
用这段代码在rss 中显示的相关文章如何加入“只会在当前文章中列出比当前文章要早的文章链接”的机制?
LS:本来就是这样的
[AD]:个人BLOG:思想碎片@Zx.MYS
[说明]:1.有事请发帖,论坛短消息已禁用。2.写Z-Blog程序的不是我,是另外一个zx。
但我测试的时候,旧的文章下面,还是会显示比它更新的相关文章。
PS:刚刚看了一下MYS 的blog,也是同样的情况。

[ 本帖最后由 sanren 于 2007-5-25 19:26 编辑 ]
返回列表