Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Discuz!收藏功能扩展-帖子书签

[复制链接]
习明 发表于 2007-4-20 21:30:03 | 显示全部楼层 |阅读模式
本帖最后由 习明 于 2008-11-27 13:15 编辑

插件名称:帖子书签(Mini版)
插件类型:功能扩展
数据库升级:有
插件作者:习明(IFS-Simon)
制作时间:2007/04/18
适用版本:Discuz!5.5(GBK)
插件功能:为单个回复插入书签,便于下次阅读时跳过已读的楼层。
说明:Mini版不能限制用户的书签数目,且只能在主题列表页面使用书签跳转功能
安装步骤:
1. 数据库升级:
  1. CREATE TABLE `cdb_bookmarks` (
  2.   `uid` mediumint(8) unsigned NOT NULL default '0',
  3.   `tid` mediumint(8) unsigned NOT NULL default '0',
  4.   `pid` int(10) unsigned NOT NULL default '0',
  5.   KEY `uid` (`uid`,`tid`,`pid`)
  6. )
复制代码
卸载请执行:
  1. DROP TABLE IF EXISTS `cdb_bookmarks`;
复制代码
2. 导入插件配置文件:discuz_plugin_bookmark_mini.txt

3. 修改文件:forumdisplay.php (需修改3处)
找到
  1. $db->query("SELECT t.* FROM {$tablepre}threads t
复制代码
替换为
  1. $db->query("SELECT t.*,b.pid FROM {$tablepre}threads t
  2.    left join {$tablepre}bookmarks b on t.tid=b.tid and b.uid='$discuz_uid'
复制代码
4. 修改文件:my.php
找到最后一处
  1. else {
复制代码
在其前加入
  1. //bookmark add by IFS-Simon begin
  2. elseif($item == 'bookmark' && $tid && $pid) {
  3. $query = $db->query("SELECT pid FROM {$tablepre}bookmarks WHERE uid='$discuz_uid' AND tid='$tid' LIMIT 1");
  4. if($db->result($query, 0)) {
  5.   $db->query("update {$tablepre}bookmarks set pid='$pid' where uid='$discuz_uid' AND tid='$tid' LIMIT 1");
  6. } else {
  7.   $db->query("INSERT INTO {$tablepre}bookmarks (uid, tid, pid) VALUES ('$discuz_uid', '$tid', '$pid')");
  8. }
  9. showmessage('bookmark_add_succeed', dreferer());
  10. }
  11. //bookmark add by IFS-Simon end
复制代码
5. 修改文件:templates/default/viewthread.htm
找到
  1. <div class="right t_number"><a href="###" class="bold" title="{lang post_copylink}" onclick="setcopy('{$boardurl}viewthread.php?tid=$tid&page=$page$fromuid#pid$post[pid]', '{lang post_copied}')">#$post[number]</a></div>
复制代码
在其后加入
  1. <!--{if !$post['first']}--><div class="right t_number"><a href="my.php?item=bookmark&tid=$tid&pid=$post[pid]" id="ajax_bm_$post[count]" onclick="ajaxmenu(event, this.id, 10000)"><span style="color:red">{lang add_bookmark}</span></a></div><!--{/if}-->
复制代码
6. 修改文件:templates/default/forumdisplay.htm
找到:
  1. <a href="viewthread.php?tid=$thread[tid]&extra=$extra"$thread[highlight]>$thread[subject]</a>
复制代码
替换为
  1. <a href="viewthread.php?tid=$thread[tid]&extra=$extra"$thread[highlight]>$thread[subject]</a><!--{if $thread['pid']}--><a href="redirect.php?goto=findpost&pid=$thread['pid']&ptid=$thread['tid']"><span style="color:red">{lang bookmark}</span></a><!--{/if}-->
复制代码
7. 修改文件:templates/default/templates.lang.php
找到
  1. $language = array
  2. (
复制代码
在后边加入

  1. 'add_bookmark' => '插入书签',
  2. 'bookmark' => '【书签】',
复制代码
8. 修改文件:templates/default/messages.lang.php
找到

  1. $language = array
  2. (
复制代码
在后边加入
  1. 'bookmark_add_succeed' => '书签已成功插入',
复制代码
9. 进入系统设置更新缓存


各位在安装使用过程中有发现本功能有任何问题请及时跟帖提出 我会尽快处理修正的 谢谢

Ver. 1.1.7https://discuz.dismall.com/thread-1125032-1-1.html
Ver. 1.1.0https://discuz.dismall.com/thread-1124601-1-1.html
Ver. 1.0.0https://discuz.dismall.com/thread-599375-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

 楼主| 习明 发表于 2007-4-20 21:30:27 | 显示全部楼层

插件名称:帖子书签(完全版)
插件类型:功能扩展
数据库升级:有
插件作者:习明(IFS-Simon)
演示地址:http://bbs.1001year.net/
制作时间:2007/04/18
适用版本:Discuz!5.5(GBK)
插件功能:为单个回复插入书签,便于下次阅读时跳过已读的楼层。
说明:完全版可以统一设置用户的最大书签数目,除了主题列表页面的书签跳转外,在“我的”功能里增加了“我的书签”,方便用户使用
安装步骤:
1. 数据库升级:
  1. CREATE TABLE `cdb_bookmarks` (
  2.   `uid` mediumint(8) unsigned NOT NULL default '0',
  3.   `tid` mediumint(8) unsigned NOT NULL default '0',
  4.   `pid` int(10) unsigned NOT NULL default '0',
  5.   KEY `uid` (`uid`,`tid`,`pid`)
  6. )
复制代码

卸载请执行:
  1. DROP TABLE IF EXISTS `cdb_bookmarks`;
复制代码


2. 导入插件配置文件:discuz_plugin_bookmark.txt

3. 修改文件:forumdisplay.php (需修改3处)
找到
  1. $db->query("SELECT t.* FROM {$tablepre}threads t
复制代码

替换为
  1. $db->query("SELECT t.*,b.pid FROM {$tablepre}threads t
  2.    left join {$tablepre}bookmarks b on t.tid=b.tid and b.uid='$discuz_uid'
复制代码


4. 修改文件:my.php
找到最后一处
  1. else {
复制代码

在其前加入
  1. //bookmark add by IFS-Simon begin
  2. elseif($item == 'bookmark') {
  3. include_once DISCUZ_ROOT."./forumdata/cache/plugin_bookmark.php";
  4. $maxmarks=$_DPLUGIN['bookmark']['vars']['maxmarks'];
  5. if(($tid && $pid) && !submitcheck('marksubmit')) {
  6.   $query = $db->query("SELECT COUNT(*) FROM {$tablepre}bookmarks WHERE uid='$discuz_uid'");
  7.   if($db->result($query, 0) >= $maxmarks && $maxmarks ) {
  8.    showmessage('bookmarks_is_full', 'my.php?item=bookmark');
  9.   }
  10.   $query = $db->query("SELECT pid FROM {$tablepre}bookmarks WHERE uid='$discuz_uid' AND tid='$tid' LIMIT 1");
  11.   if($db->result($query, 0)) {
  12.    $db->query("update {$tablepre}bookmarks set pid='$pid' where uid='$discuz_uid' AND tid='$tid' LIMIT 1");
  13.   } else {
  14.    $db->query("INSERT INTO {$tablepre}bookmarks (uid, tid, pid) VALUES ('$discuz_uid', '$tid', '$pid')");
  15.    }
  16.    showmessage('bookmark_add_succeed', dreferer());
  17.   } elseif(!$tid && !$pid) {
  18.    if(!submitcheck('marksubmit')) {
  19.     $marklist = array();
  20.      $query = $db->query("SELECT COUNT(*) FROM {$tablepre}bookmarks b, {$tablepre}threads t
  21.       WHERE b.uid = '$discuz_uid' AND b.tid=t.tid AND t.displayorder>='0'");
  22.      $num = $db->result($query, 0);
  23.      $multipage = multi($num, $tpp, $page, "my.php?item=bookmark");
  24.      $query = $db->query("SELECT t.tid, t.fid, t.subject, t.replies, t.lastpost, t.lastposter, f.name, b.pid
  25.       FROM {$tablepre}bookmarks b, {$tablepre}threads t, {$tablepre}forums f
  26.       WHERE b.tid=t.tid AND t.displayorder>='0' AND b.uid='$discuz_uid' AND t.fid=f.fid
  27.       ORDER BY t.lastpost DESC LIMIT $start_limit, $tpp");
  28.      while($mark = $db->fetch_array($query)) {
  29.       $mark['lastposterenc'] = rawurlencode($mark['lastposter']);
  30.       $mark['lastpost'] = gmdate("$dateformat $timeformat", $mark['lastpost'] + $timeoffset * 3600);
  31.       $marklist[] = $mark;
  32.      }
  33.    } else {
  34.     if($ids = implodeids($delete)) {
  35.      $db->query("DELETE FROM {$tablepre}bookmarks WHERE uid='$discuz_uid' AND tid IN ($ids)", 'UNBUFFERED');
  36.     }
  37.     showmessage('bookmark_update_succeed', dreferer());
  38.    }
  39.   }
  40. }
  41. //bookmark add by IFS-Simon end
复制代码


5. 修改文件:templates/default/viewthread.htm
找到
  1. <div class="right t_number"><a href="###" class="bold" title="{lang post_copylink}" onclick="setcopy('{$boardurl}viewthread.php?tid=$tid&page=$page$fromuid#pid$post[pid]', '{lang post_copied}')">#$post[number]</a></div>
复制代码

在其后加入
  1. <!--{if !$post['first']}--><div class="right t_number"><a href="my.php?item=bookmark&tid=$tid&pid=$post[pid]" id="ajax_bm_$post[count]" onclick="ajaxmenu(event, this.id, 10000)"><span style="color:red">{lang add_bookmark}</span></a></div><!--{/if}-->
复制代码


6. 修改文件:templates/default/forumdisplay.htm
找到:
  1. <a href="viewthread.php?tid=$thread[tid]&extra=$extra"$thread[highlight]>$thread[subject]</a>
复制代码

替换为
  1. <a href="viewthread.php?tid=$thread[tid]&extra=$extra"$thread[highlight]>$thread[subject]</a><!--{if $thread['pid']}--><a href="redirect.php?goto=findpost&pid=$thread['pid']&ptid=$thread['tid']"><span style="color:red">{lang bookmark}</span></a><!--{/if}-->
复制代码


7. 修改文件:templates/default/templates.lang.php
找到
  1. $language = array
  2. (
复制代码

在后边加入

  1. 'add_bookmark' => '插入书签',
  2. 'bookmark' => '【书签】',
  3. 'my_bookmark' => '我的书签',
  4. 'nomarks' => '目前没有书签。',
复制代码


8. 修改文件:templates/default/messages.lang.php
找到

  1. $language = array
  2. (
复制代码

在后边加入

  1. 'bookmarks_is_full' => '您的书签库已满,请在继续操作前删除一些不用的书签。',
  2. 'bookmark_add_succeed' => '书签已成功插入',
  3. 'bookmark_update_succeed' => '书签库已成功更新,现在将转入更新后的书签库。',
复制代码


9. 修改文件:templates/default/jsmenu.htm
找到:
  1. <tr><td class="popupmenu_option"><a href="my.php?item=favorites&type=thread">{lang my_favorites}</a></td></tr>
复制代码

在后边加入
  1. <tr><td class="popupmenu_option"><a href="my.php?item=bookmark">{lang my_bookmark}</a></td></tr>
复制代码


10. 修改文件:templates/default/my.htm
找到:
  1. <!--{elseif $item == 'promotion'}-->{lang post_my_advisit}
复制代码

在后边加入
  1. <!--{elseif $item == 'bookmark'}-->{lang my_bookmark}
复制代码


找到
  1. <tbody>
  2. <tr class="tdunderline" style="background: {ALTBG1}"><td width="10" align="center"><a href="###" onclick="toggle_collapse('menu_mysubscriptions')"><img id="menu_mysubscriptions_img" <!--{if $item == 'subscriptions' || !isset($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'menu_mysubscriptions ') === FALSE}-->src="{IMGDIR}/menu_collapsed_no.gif"<!--{else}-->src="{IMGDIR}/menu_collapsed_yes.gif"<!--{/if}--> border="0" alt="" /></a></td><td><a href="###" onclick="toggle_collapse('menu_mysubscriptions')">{lang my_subscriptions}</a></td></tr>
复制代码

在前边加入

  1. <tbody>
  2. <tr class="tdunderline" style="background: {ALTBG1}"><td width="10" align="center"><a href="###" onclick="toggle_collapse('menu_mybookmark')"><img id="menu_mybookmark_img" <!--{if $item == 'bookmark' || !isset($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'menu_mybookmark ') === FALSE}-->src="{IMGDIR}/menu_collapsed_no.gif"<!--{else}-->src="{IMGDIR}/menu_collapsed_yes.gif"<!--{/if}--> border="0" alt="" /></a></td><td><a href="###" onclick="toggle_collapse('menu_mybookmark')">{lang my_bookmark}</a></td></tr>
  3. </tbody>
  4. <tbody id="menu_mybookmark" <!--{if $item == 'bookmark' || !isset($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'menu_mybookmark ') === FALSE}--><!--{else}-->style="display: none"<!--{/if}-->>
  5. <!--{if $item == 'bookmark'}-->
  6. <tr class="bold"><td width="10"></td><td>    {lang my_bookmark}</td></tr>
  7. <!--{else}-->
  8. <tr><td width="10"></td><td>    <a href="my.php?item=bookmark">{lang my_bookmark}</a></td></tr>
  9. <!--{/if}-->
  10. </tbody>
复制代码


找到
  1. {template my_favorites}
复制代码

在后边加入
  1. <!--{elseif $item == 'bookmark'}-->
  2. {template my_bookmark}
复制代码


11. 上传my_bookmark.htm至templates/default/

12. 系统设置-扩展设置-插件设置-插件参数设置 设置用户最大书签数

13. 进入系统设置更新缓存

可选修改:此处修改mini版、完全版均可选进行。不进行此修改不会影响本功能的使用;但修改后可以很大程度的提高论坛某些跳转功能(包括本功能)的有效性。即使不安装本功能也可以进行此修改。
修改文件:redirect.php

找到
  
  1. $query = $db->query("SELECT tid, dateline FROM {$tablepre}posts WHERE pid='$pid'");
  2.    if($post = $db->fetch_array($query)) {
复制代码
替换为
  1. $query = $db->query("SELECT tid, dateline,pid FROM {$tablepre}posts WHERE ".(intval($ptid) ? "pid<='$pid' and tid='".intval($ptid)."' order by pid desc limit 1" : "pid='$pid'"));
  2.    if($post = $db->fetch_array($query)) {
  3.     $pid=$post['pid'];
复制代码


附件都在顶楼

[ 本帖最后由 习明 于 2007-4-22 12:34 编辑 ]

评分

2

查看全部评分

回复

使用道具 举报

TaRot! 发表于 2007-4-20 21:31:58 | 显示全部楼层
啊哈..整理发布下带此书签的DiscuzArticle v0.3!
回复

使用道具 举报

Clwarm 发表于 2007-4-20 21:32:32 | 显示全部楼层
不介意我支持吧?!
回复

使用道具 举报

TaRot! 发表于 2007-4-20 21:35:26 | 显示全部楼层

回复 #4 Clwarm 的帖子

没想到你会出现.
回复

使用道具 举报

小铭铭 发表于 2007-4-20 21:35:41 | 显示全部楼层
不介意我支持吧
回复

使用道具 举报

Clwarm 发表于 2007-4-20 21:36:36 | 显示全部楼层

回复 #5 TaRot! 的帖子

我随便来逛逛~主要是瞅一眼有什么新插件没有
回复

使用道具 举报

yxw110 发表于 2007-4-20 21:41:47 | 显示全部楼层
这么多啊!!!!!
回复

使用道具 举报

 楼主| 习明 发表于 2007-4-20 21:44:45 | 显示全部楼层
原帖由 yxw110 于 2007-4-20 21:41 发表
这么多啊!!!!!

嗯 是多了点 不过里边是两个版本 我一起发的 嘿嘿
回复

使用道具 举报

小铭铭 发表于 2007-4-20 21:48:39 | 显示全部楼层
:) 在支持习兄一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-22 14:56 , Processed in 0.041633 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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