Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 21210|回复: 20

[插件] [HACK] 完美版 RSS for D4.0 [更新AM:01:16]

[复制链接]
发表于 2006-2-12 00:59:07 | 显示全部楼层 |阅读模式
改良: AndyGod
名稱: 完美版 RSS for D4.0
版本: 4.0.212
說明:
1.解決現時以知的所有 BUG
2.改用全 Cache 讀取, 不再需要浪費 SQL

花了很多時間來改良這個 rss.php, 最後用了 Discuz! 3 的方法解決!
Discuz! 3 的 rss 是實真的比 Discuz! 4 好很多!

修改後有出錯不用多問, 必定是有地方改錯了 "Orz


  1. # 打開 \include\cache.func.php
  2. #找 (不心改錯)

  3.                         writetocache($plugin['identifier'], '', "\$_DPLUGIN['$plugin[identifier]'] = ".arrayeval($data), 'plugin_');
  4.                 }
  5.         }

  6. # 在下行加入

  7. # RSS Cache HACK ADD By: AndyGod
  8.         if($cachename == 'rss') {
  9.                 $fids = 0;
  10.                 $forums = array(0 => array('fid' => '0'));
  11.                 $query = $db->query("SELECT f.fid, f.name, ff.viewperm FROM {$tablepre}forums f, {$tablepre}forumfields ff WHERE ff.fid=f.fid AND ff.password=''");
  12.                 while($forum = $db->fetch_array($query)) {
  13.                         if(empty($forum['viewperm']) || ($forum['viewperm'] && strstr($forum['viewperm'], "\t7\t"))) {
  14.                                 $forum['name'] = strip_tags($forum['name']);
  15.                                 $forums[0]['fid'] .= ','.$forum['fid'];
  16.                                 $forums[] = $forum;
  17.                         }
  18.                 }
  19.                 foreach($forums as $forum) {
  20.                         $data = array('lastupdate' => $GLOBALS['timestamp'], 'xml' => '');
  21.                         $data['xml'] =        "<?xml version=\"1.0\" encoding=\"".$GLOBALS['charset']."\"?>\n".
  22.                                         "<rss version=\"2.0\">\n".
  23.                                         "<channel>\n".
  24.                                         (is_numeric($forum['fid']) ?
  25.                                         "<title>$GLOBALS[bbname] - $forum[name]</title>\n".
  26.                                         "<link>$GLOBALS[boardurl]forumdisplay.php?fid=$forum[fid]</link>\n".
  27.                                         "<description>Latest 20 threads of $forum[name]</description>\n"
  28.                                         :
  29.                                         "<title>$GLOBALS[bbname] - RSS by AndyGod</title>\n".
  30.                                         "<link>$GLOBALS[boardurl]index.php</link>\n".
  31.                                         "<description>Latest 20 threads of all forums</description>\n"
  32.                                         ).
  33.                                         "<copyright>Copyright(C) ".strip_tags($GLOBALS['bbname'])."</copyright>\n".
  34.                                         "<generator>UNetBoard by Comsenz Technology Ltd</generator>\n".
  35.                                         "<lastBuildDate>".gmdate('r', $GLOBALS['timestamp'])."</lastBuildDate>\n".
  36.                                         "<ttl>10</ttl>\n".
  37.                                         "<image>\n".
  38.                                         "<url>$GLOBALS[boardurl]images/common/rss.gif</url>\n".
  39.                                         "<title>".dhtmlspecialchars($GLOBALS['bbname'])."</title>\n".
  40.                                         "<link>$GLOBALS[boardurl]</link>\n".
  41.                                         "</image>\n";

  42.                         $query = $db->query("SELECT f.name AS forumname, t.tid, t.author, t.dateline, t.subject, t.replies, p.message FROM {$tablepre}threads t
  43.                                 LEFT JOIN {$tablepre}posts p ON p.tid=t.tid AND p.dateline=t.dateline AND p.authorid=t.authorid
  44.                                 LEFT JOIN {$tablepre}forums f ON f.fid=t.fid
  45.                                 WHERE t.fid IN ($forum[fid]) AND t.displayorder>='0' AND t.readperm>=0
  46.                                 ORDER BY t.dateline DESC LIMIT 20");
  47.                         while($thread = $db->fetch_array($query)) {
  48.                                 $thread['message'] = preg_replace("/\[hide=?\d*\](.+?)\[\/hide\]/is", "**** Hidden message ****", $thread['message']);
  49.                                 $data['xml'] .=        "<item>\n".
  50.                                                                 "<title>$thread[subject]</title>\n".
  51.                                                                 "<link>$GLOBALS[boardurl]viewthread.php?tid=$thread[tid]</link>\n".
  52.                                                                 "<description><![CDATA[" . nl2br( dhtmlspecialchars( cutstr( strip_tags($thread['message']), 1000) ) ) . "]]></description>\n".
  53.                                                                 "<category>".strip_tags($thread['forumname'])."</category>\n".
  54.                                                                 "<author>$thread[author]</author>\n".
  55.                                                                 "<pubDate>".gmdate('r', $thread['dateline'])."</pubDate>\n".
  56.                                                                 "</item>\n";
  57.                         }
  58.                         $data['xml'] .= "</channel>\n</rss>";
  59.                         writetocache(intval($forum['fid']), '', getcachevars($data), 'rss_');

  60.                         if($forum['fid'] == $GLOBALS['fid']) {
  61.                                 $GLOBALS['xml'] = $data['xml'];
  62.                         }
  63.                 } while($forum = $db->fetch_array($query));
  64.         }
  65. # RSS FIX HACK END

  66. # 注意, 加入後正常在 # RSS FIX HACK END 下行有一個 "}" 就沒改錯了
  67. # 再用 rss.rar 內的 rss.php 最代舊這個就可以
  68. # 完成 ^^
复制代码

[ 本帖最后由 AndyGod 于 2006-2-12 07:50 编辑 ]
发表于 2006-2-12 01:00:18 | 显示全部楼层
沙发支持
回复

使用道具 举报

发表于 2006-2-12 01:01:03 | 显示全部楼层
板凳球員來了!!
回复

使用道具 举报

发表于 2006-2-12 01:06:30 | 显示全部楼层
另外如有改 hidepost 的人可在  AND t.readperm>=0 加多個 AND p.hidepost=0


加在哪裏??
回复

使用道具 举报

发表于 2006-2-12 01:11:16 | 显示全部楼层
p:>
回复

使用道具 举报

发表于 2006-2-12 01:13:10 | 显示全部楼层
LZ~~~~沒改hidepost的要把。。

  1. $query = $db->query("SELECT f.name AS forumname, t.tid, t.author, t.dateline, t.subject, t.replies, p.hidepost, p.message FROM {$tablepre}threads t
复制代码


裏面的, p.hidepost
去掉嗎???
回复

使用道具 举报

 楼主| 发表于 2006-2-12 01:18:36 | 显示全部楼层
原帖由 karl907 于 2006-2-12 01:13 发表
LZ~~~~沒改hidepost的要把。。
[code]
$query = $db->query("SELECT f.name AS forumname, t.tid, t.author, t.dateline, t.subject, t.replies, p.hidepost, p.message FROM {$tablepre}threads t
[/ ...

YES, 一定要 DEL p.hidepost,

[ 本帖最后由 AndyGod 于 2006-2-12 01:22 编辑 ]
回复

使用道具 举报

发表于 2006-2-12 01:21:47 | 显示全部楼层
有會出錯的。。剛才。。測試了!
回复

使用道具 举报

发表于 2006-2-12 01:27:33 | 显示全部楼层
很好,每天数据库里一大堆RSS垃圾,用CACHE就好了
回复

使用道具 举报

发表于 2006-2-12 01:37:26 | 显示全部楼层
更新了
^^
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )star

GMT+8, 2019-8-23 20:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表