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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] [原创]悬赏提问 for 4.1.0 by lu5266[更新:05/28 09 :50]

[复制链接]
lu5266 发表于 2006-5-6 20:55:29 | 显示全部楼层 |阅读模式
[最后更新:05/0 09 :50,升级安装 看3楼]

名称: 悬赏提问 for 4.1.0 by lu5266
演示:  http://www.5466.ik8.com/           
功能: 悬赏提问,奖励回答者积分,其他的看2楼
版本: 4.1.0
作者: lu5266
难易: 简单
支持: http://www.5466.ik8.com/
文件:  post.php   include/newthread.inc.php
模板:  viewthread.htm   forumdisplay.htm  post_newthread.htm(注意对应风格的)
版权:  http://www.discuzs.net  (lu5266)
另外:  所有修改都采用标准接口 ,把修改最大的简单化.


全新安装方法:

1: 后台升级数据库


  1. ALTER TABLE `cdb_threads` ADD `dpt_iknow_question` SMALLINT( 6 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `price` ,
  2. ADD `dpt_iknow_answer` SMALLINT( 6 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `dpt_iknow_question` ,
  3. ADD `dpt_iknow_accept` VARCHAR( 50 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL AFTER `dpt_iknow_answer` ;
复制代码


(注意: 这个由于mysql版本不一样,可能升级不了,假如不可以升级,那就把 CHARACTER SET gbk COLLATE gbk_chinese_ci 去掉后,在升级)

2: 下载附件传到对应目录

3: 后台导入插件  discuz_plugin_iknow.txt (在附件里)

4: 后台设置插件参数

5:修改文件

1): 修改 post.php

查找:

  1. if($action == 'newthread') {
复制代码


在上面加上:

  1. eval($hooks['iknow_in_post']);//Add by lu5266(www.5466.ik8.com)
复制代码


2): 修改 include/newthread.inc.php

查找:

  1. $tid = $db->insert_id();
复制代码


在下面加上:

  1. eval($hooks['iknow_in_newthread']); //Add by lu5266
复制代码


3): 修改 viewthread.htm(对应风格,下同)

A:查找:

  1. </table>
  2. </div>
复制代码


在上面加上:

  1. <!--{eval eval($hooks['iknow_in_viewthread']);}--><!--Add by lu5266-->
复制代码


B: 查找

  1. <!--{if $forum['ismoderator'] || $post['authorid'] == $discuz_uid}--> <a href="post.php?action=edit&fid=$fid&tid=$tid&pid=$post[pid]&page=$page&extra=$extra"><img src="{IMGDIR}/edit.gif" border="0" align="absmiddle" alt="{lang edit_post}"></a><!--{/if}-->
复制代码


在上面加上:

  1. <!--{eval eval($hooks['iknow_in_viewthread1']);}--><!--Add by lu5266-->
复制代码




4): 修改 forumdisplay.htm

查找

  1. $thread[subject]  </a>
复制代码


在后面加上:

  1. <!--{eval eval($hooks['iknow_in_forumdisplay']);}--><!--Add by lu5266-->
复制代码


5): 修改 post_newthread.htm

查找:

  1. <!--{if $allowsetreadperm}-->
复制代码


在上面加上:

  1. <!--{eval eval($hooks['iknow_in_post_newthread']);}--><!--Add by lu5266-->
复制代码



6:更新缓存

完工

语言包为

plugins/iknow/iknow.lang.php

自己修改你自己的语言

繁体导入文件(By chiaho )

https://discuz.dismall.com/attachment.php?aid=46839

[ 本帖最后由 lu5266 于 2006-10-6 17:49 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

 楼主| lu5266 发表于 2006-5-6 20:56:03 | 显示全部楼层
语言包为

plugins/iknow/iknow.lang.php

自己修改你自己的语言


你出现任何问题

先看看
你自己的安装到底对了与否

再看看回复中有没有你的情况


基于时间和精力

还有你修改的方便

所有的修改按照标准接口(使用钩子技术)

把该独立的都独立出来

所以功能是完成了的

可是 不是很花俏

这就是鱼和熊掌的问题

所以多有问题

大家见量

最新更新:

修正了一两个bug
基本采纳了大家的意见
写了符合大家要求的
就是要记录的
我是由于时间的不允许
我也感觉不是非常很实用
所以就没有写

[ 本帖最后由 lu5266 于 2006-5-28 12:51 编辑 ]
回复

使用道具 举报

 楼主| lu5266 发表于 2006-5-6 20:56:30 | 显示全部楼层
升级安装:

由于该插件为标准接口,升级安装极为方便

go---->

1:修改 viewthread.htm(对应风格,下同)

查找:
  1. <!--{eval eval($hooks['iknow_chk_fids']);}--><!--Add by lu5266-->
复制代码


删除(其实你懒得修改的话,可以不删除,没什么影响的,标准接口的好处).

2:修改 forumdisplay.htm

查找:  
  1. <!--{eval eval($hooks['iknow_chk_fids']);}--><!--Add by lu5266-->
复制代码


删除(其实你懒得修改的话,可以不删除,没什么影响的,标准接口的好处).

继续查找:
  1. $thread[subject]  </a>
复制代码


在后面加上:

  1. <!--{eval eval($hooks['iknow_in_forumdisplay']);}--><!--Add by lu5266-->
复制代码


3:重新下载新的附件

文件覆盖,后台删除原来的再安装新的
升级完毕


下面是问题和特殊要求解决方法:

1.
[quote]原帖由 odo_cd 于 2006-5-10 02:02 发表
停止悬赏后再主题后面显示悬赏结束,怎么弄?


插件管理->悬赏/提问->[详情]->插件钩子设置->in_forumdisplay(钩子名称)->[编辑]-> PHP 代码->

用下面的替换原来的

  1. @require_once DISCUZ_ROOT.'./forumdata/cache/plugin_iknow.php';
  2. $vars  = $_DPLUGIN['iknow']['vars'];
  3. if($discuz_uid && (!$vars['fids'] || in_array($fid,explode(',',$vars[fids])))){
  4.         @require_once    DISCUZ_ROOT."./plugins/iknow/iknow.lang.php";
  5.         $creditid      = intval(substr($vars['credit'],-1,1));
  6.         $usercredit    = $GLOBALS[extcredits.$creditid];
  7.         $creditunit    = $extcredits[$creditid]['unit'];
  8.         $credittitle   = $extcredits[$creditid]['title'];
  9.         if($thread[dpt_iknow_answer] && $thread['dpt_iknow_question']) {
  10.                 echo " $ik_lang[xuanshang]($credittitle):$thread[dpt_iknow_question] $creditunit ]";
  11.         }elseif ($thread[dpt_iknow_answer] && !$thread['dpt_iknow_question']){
  12.                 echo " [$ik_lang[finish2]]";
  13.         }
  14. }
复制代码


(想要游客看见主题列表上有悬赏提示的话, 把上面代码中$discuz_uid && 去掉后,再替换原来的)

->提交
就可以了[/quote]

2.作者停止悬赏后,该贴自动关闭

在plugins/iknow/admin.inc.php中
查找:

  1. $db->query("UPDATE {$tablepre}threads SET dpt_iknow_question  = 0 WHERE tid = '$tid'", 'UNBUFFERED');
复制代码


在下面
  1. $db->query("UPDATE {$tablepre}threads SET closed  ='1' WHERE tid = '$tid'", 'UNBUFFERED');
复制代码


3.
原帖由 odo_cd 于 2006-5-10 15:05 发表
可以考虑在法帖的时候加入一个判断,
1、回复就加分(本身有的)
2、回复不加分(只有采用后才加分)




修改
plugins/iknow/replay.inc.php


  1. $query = $db->query("SELECT tid FROM {$tablepre}posts WHERE tid='$tid' AND authorid='$discuz_uid'");

  2. if(!$db->num_rows($query)) {
  3.         if($thread['dpt_iknow_question'] > $thread['dpt_iknow_answer'] * $vars[accept]) {
  4.                 $db->query("UPDATE {$tablepre}members SET extcredits$creditid = extcredits$creditid+$thread[dpt_iknow_answer] WHERE uid = '$discuz_uid'", 'UNBUFFERED');
  5.                 $db->query("UPDATE {$tablepre}threads SET dpt_iknow_question  = dpt_iknow_question-$thread[dpt_iknow_answer] WHERE tid = '$tid'", 'UNBUFFERED');
  6.         }       

  7. }
复制代码


删除

4.
原帖由 kangkanglei 于 2006-5-10 19:46 发表
viewthread.htm里面有6个
</table>
</div>
啊,在那个后面加啊



你直接复制查找

绝对是只有一处

但是你自己换行了

是在
  1. <form method="post" name="delpost" action="topicadmin.php?action=delpost&fid=$fid&tid=$tid&page=$page">
  2. <input type="hidden" name="formhash" value="{FORMHASH}">
复制代码


上面的那处

5:
原帖由 odo_cd 于 2006-5-10 20:25 发表
回复被采纳的回复下面加上:

本回复已经被作者采纳

怎么加?

我弄了半天不成功



插件管理->悬赏/提问->[详情]->插件钩子设置->in_viewthread1(钩子名称)->[编辑]-> PHP 代码->

用下面的替换原来的

  1. if($thread['authorid'] == $discuz_uid &&  $thread['dpt_iknow_question'] && $post['authorid'] != $discuz_uid && !in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  2.         echo "<a href="post.php?action=accept&fid=$fid&tid=$tid&number=$post[number]&touid=$post[authorid]&pid=$post[pid]&page=$page">$ik_lang[accept1]</a>";
  3. }elseif(in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  4.         echo $ik_lang[accept7];
  5. }
  6. if($forum['ismoderator'] && $post['number'] !=1 && $thread['dpt_iknow_question'] && !in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  7.         echo "<a href="post.php?action=admin&fid=$fid&tid=$tid&touid=$post[authorid]&pid=$post[pid]&page=$page&extraction=punish">$ik_lang[punish]</a>";
  8. }
复制代码


->提交
就可以了

修改
plugins/iknow/iknow.lang.php


   
  1. 'accept6'   => '你的回复被楼主采纳,你的帐户将增加相应的积分.',
复制代码


下面加上:
  1.     'accept7'   => '本回复已经被作者采纳.',
复制代码



6
原帖由 errain 于 2006-5-11 11:05 发表
lulu老大     因为灌水回复不给分了,能不能把采纳的改成设每个给多少奖励积分,就给多少,而不是给两倍积分.


                              要是发主题提问者点"采纳"时能弹出个框, ...





插件管理->悬赏/提问->[详情]->插件钩子设置->in_viewthread1(钩子名称)->[编辑]-> PHP 代码->

用下面的替换原来的

  1. if($thread['authorid'] == $discuz_uid &&  $thread['dpt_iknow_question'] && $post['authorid'] != $discuz_uid && !in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  2.         echo "<a href='###' onclick='javascript:creditval=window.prompt("请输入要奖励的积分数",""); if(creditval>0) window.location="post.php?action=accept&fid=$fid&tid=$tid&number=$post[number]&touid=$post[authorid]&pid=$post[pid]&page=$page&creditval="+creditval;' >  $ik_lang[accept1] </a>";       
  3. }elseif(in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  4.         echo $ik_lang[accept7];
  5. }
  6. if($forum['ismoderator'] && $post['number'] !=1 && $thread['dpt_iknow_question'] && !in_array($post['number'],explode('、',$thread['dpt_iknow_accept']))){
  7.         echo "<a href="post.php?action=admin&fid=$fid&tid=$tid&touid=$post[authorid]&pid=$post[pid]&page=$page&extraction=punish">$ik_lang[punish]</a>";
  8. }
复制代码


->提交
就可以了

修改

plugins/iknow/accept.inc.php

  1. $acceptnums = $thread['dpt_iknow_accept'] ? $thread['dpt_iknow_accept'] .'、'.$number : $number;
复制代码


上面加上:
  1.         $creditval = intval($creditval);
  2.         $thread[dpt_iknow_answer] = $creditval > 0 && $creditval <= $thread['dpt_iknow_question'] ? $creditval : 2*$thread[dpt_iknow_answer];
复制代码

[ 本帖最后由 lu5266 于 2006-5-12 16:54 编辑 ]
回复

使用道具 举报

haohao036 发表于 2006-5-6 21:08:52 | 显示全部楼层
up 抢位支持。
回复

使用道具 举报

kisslbz 发表于 2006-5-6 21:09:58 | 显示全部楼层
抢位置
回复

使用道具 举报

I521 发表于 2006-5-6 21:10:52 | 显示全部楼层
bu  cuo 不错
回复

使用道具 举报

amoshuang 发表于 2006-5-6 21:12:19 | 显示全部楼层
占位
回复

使用道具 举报

 楼主| lu5266 发表于 2006-5-6 21:15:20 | 显示全部楼层
22222

[ 本帖最后由 lu5266 于 2006-7-8 16:50 编辑 ]
回复

使用道具 举报

amoshuang 发表于 2006-5-6 21:15:26 | 显示全部楼层
回帖能不能:只让楼主、版主和管理员能够看见?

这样,就可以让多个会员参与了,呵呵
回复

使用道具 举报

师妃暄 发表于 2006-5-6 21:15:59 | 显示全部楼层
支持一个 ^_^
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:53 , Processed in 0.034943 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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