user-pic

这样的功能怎样编写

Vote 0 Votes

http://easun.org/upload/early/2_1119254604.jpg


“支持楼主”按钮只会出现在主题帖子上(投票帖子除外)。

当会员点击“支持楼主”按钮后,左边楼主资料里的“支持数”会增加1点、主题列表上的“支持”会增加1点。
“支持数”与“支持”是2个不同的变量,“支持数”是楼主的属性,这个属性值会一直累加下去;“支持”是主题帖子的属性,像投票的票数一样,每个会员只能支持楼主一次,楼主与管理员可以看见支持者的名单。

“支持数”可以体现出楼主一直以来所发帖子的受欢迎程度,“支持数”越大,说明该会员越受欢迎;
“支持”可以让会员在主题列表上看到帖子的受欢迎程度,并不是帖子的点击

有时候部分会员会觉得帖子很好,但回复时不知道说些什么,又或者懒得回复,这时候点击“支持楼主”按钮无疑是最好的支持方法。

15 Replies

| Add a Reply
  • 看到过类似的插件,但自己不懂CGI,修改不了


    评价帖子插件说明

    一、包含文件

    bean.cgi评价帖子主文件,放于 cgi-bin 目录下,UNIX 系统改属性为 755 。
    评价帖子.dat评价帖子帮助文件,放于 cgi-bin/help 目录下。
    readme.txt本说明文件,认真仔细看。
    bean目录请自建于 cgi-bin 目录下,用于存放评价帖子数据文件。
    UNIX 系统改属性为 777 。并在其下建立相应论坛序号的子目录。


    二、简介

      论坛中用户拥有一些属性,在这些属性中,如 发贴数、等级 等这些只能反
    应用户的灌水能力。货币、经验、魅力 等是与发贴数关联的,是重复的东西又
    没有多大用处,所以在 MX 中就去掉了,而威望数量有限,且只能由版主增加,
    只能反应管理员的意志。这些都不能反应用户的发贴水平和在用户中的地位。我
    就想给用户增加了两个新的属性,一个是评价值,随发贴数增加,在评价他人的
    帖子的时候消耗,只有多发贴才能多评价他人的帖子。另一个是声望值,只有你
    发的帖子受到大家的支持的时候才会增加,遭到反对的时候则减少,从而反应你
    发贴的质量和在用户中的地位,鼓励用户多发贴,发好贴。详见帮助。
      这两个属性,我使用了被 MX 废弃的 附加经验 和 附加魅力 的字段进行存
    储。所以这个插件仅适用于 MX 版,如果你的论坛已经使用了这两个字段,或者
    你使用的是 XP 版,请自行修改程序,转为使用其他字段存储。
      使用此插件除使用 bean.cgi 外,还要对一些文件进行修改,修改方法见下。
      我所增加的这两个属性,禁止任何形式的修改、作弊,否则将失去增加他的
    意义。并禁止在注册时给初始值,初始值只能为零。


    三、其他文件修改方法

    topic.cgi显示声望,用户评价情况及评价连接

      else {$post = qq($post<table width=100% cellpadding=0 cellspacing=0><tr><td><BR><BR>$postcopyright<BR></td></tr></table>) if (($post ne "\n</td></tr></table>")&&($posticon !~/<br>/i));}
    后加

    $rrn=$rn-1;
    if ($rrn==0) {$file = "$intopic.cgi";} else {$file = "$intopic\_$rrn.cgi";}
    $awardfilename = "${lbdir}bean/$inforum/award$file";
    $punishfilename = "${lbdir}bean/$inforum/punish$file";
    if (-e $awardfilename) {
    open(FILE,$awardfilename);
    $adawardname = <FILE>;
    $awardname = <FILE>;
    close(FILE);
    chomp $adawardname;
    chomp $awardname;
    ($adawardname,$moawardname) = split("\t",$adawardname);
    #$awardname = ",$awardname,";
    $awardname =~ s/\,\,| +\,|\, +/\,/g;
    #if ($awardname =~ /,$inmembername,/) {$inawarded = "yes";}
    $awardname =~ s/^\,//;
    $awardname =~ s/\,$//;
    my @inawardname = split(",",$awardname);
    $awardnum = @inawardname;
    }
    else {
    $adawardname = "";
    $moawardname = "";
    $awardname = "";
    $awardnum = 0;
    }
    if (-e $punishfilename) {
    open(FILE,$punishfilename);
    $adpunishname = <FILE>;
    $punishname = <FILE>;
    close(FILE);
    chomp $adpunishname;
    chomp $punishname;
    ($adpunishname,$mopunishname) = split("\t",$adpunishname);
    #$punishname = ",$punishname,";
    $punishname =~ s/\,\,| +\,|\, +/\,/g;
    #if ($punishname =~ /,$inmembername,/) {$inpunished = "yes";}
    $punishname =~ s/^\,//;
    $punishname =~ s/\,$//;
    my @inpunishname = split(",",$punishname);
    $punishnum = @inpunishname;
    }
    else {
    $adpunishname = "";
    $mopunishname = "";
    $punishname = "";
    $punishnum = 0;
    }
    $awardnum += 3 if (lc($adawardname) ne "") ;
    $awardnum += 2 if (lc($moawardname) ne "") ;
    $punishnum += 3 if (lc($adpunishname) ne "") ;
    $punishnum += 2 if (lc($mopunishname) ne "") ;

    $inscore = qq~<font color=$postfontcolor>支持($awardnum) 反对($punishnum)</font> ~;
    $inscore .= qq~<input type=button value=评价 onclick="openScript('bean.cgi?forum=$inforum&topic=$intopic&reply=$rrn',500,400)" > ~ if ($inmembername ne "客人") ;


    <br><font color=$postfontcolorone>威望: $rating$rateuser</font>
    上加
    <br><font color=$postfontcolortwo>声望:$addjy</font>


    <td align=right nowarp valign=bottom width=110></td></form>
    改成
    <td align=right nowarp valign=bottom width=180>$inscore</td></form>



    post.cgi在用户发贴时增加评价值

          $numberofposts++;
    下加
    $meili += 5;

    再找
          $numberofreplys++;
    下加
    $meili += 3;



    delpost.cgi在用户帖子被删时减少评价值

          $postdel ++ if ($inleavemessage eq "yes");
    改成
    if ($inleavemessage eq "yes"){$postdel++;$meili -= 10;}

    再找
    $postdel ++;
    下加
    $meili -= 10;



    profile.cgi在用户资料中显示声望及评价值

    <td bgColor=$miscbackone valign=middle><font color=$fontcolormisc><b>门派:</b></font></td>
    <td bgColor=$miscbacktwo valign=middle><font color=$fontcolormisc> $jhmp</font></td>
    </tr>
    下加
    <tr>
    <td bgColor=$miscbackone valign=middle><font color=$fontcolormisc><b>声望:</b></font></td>
    <td bgColor=$miscbacktwo valign=middle><font color=$fontcolormisc> <b>$addjy</b></font></td>
    <td bgColor=$miscbackone valign=middle><font color=$fontcolormisc><b>评价值:</b></font></td>
    <td bgColor=$miscbacktwo valign=middle><font color=$fontcolormisc> $meili</font></td>
    </tr>




    http://easun.org/upload/early/B8F8MXB0E6D4F6BC_1119254778.zip

  • 汗~~~这儿也看到你了。。。。
    这样比较容易纵容看帖不回,呵呵~~~~

  • 格式早就变化了。这个绝对不能用在LeoBBSX上的。只能用在Lb5000上啊。。
    好多变量都不对了。

    PS:http://www.hong0.net/forum/cgi-box/topic.cgi?forum=4&topic=176 这个似乎要好点的,



  • 下面引用由来逛逛在 2005/6/20 05:29pm 发表的内容:

    汗~~~这儿也看到你了。。。。
    这样比较容易纵容看帖不回,呵呵~~~~


    好几个BBS我都跑过了,看到好几个帖子上都有路扬的热心回复,所以点击他资料上的主页~就这样跑来了~呵呵,LEOHACK上的朋友说新版本增加了类似的功能,但我喜欢的是MX啊,MX简洁又快速,是LB首选!
    现在论坛灌水的人就是多,通常回复一两句空洞无物的话就过去了,这样的帖子不要也罢,
    我相信真正喜欢帖子的人是会回复的,而且是用心的回复。
    我认为论坛首要的是气氛而不是人气。
    还有一个很想得到的功能,不过先弄好这个再说~解决问题要一步一步来。


    下面引用由路杨在 2005/6/20 11:22pm 发表的内容:

    格式早就变化了。这个绝对不能用在LeoBBSX上的。只能用在Lb5000上啊。。
    好多变量都不对了。
    PS:http://www.hong0.net/forum/cgi-box/topic.cgi?forum=4&topic=176 这个似乎要好点的,


    忘了说我的LB是MX版,鸡蛋石头功和投票帖子的代码我在GOOGLE上搜过,就是找不到,现在好了,可以参照。

    对于提出的这个功能,我的想法是修改投票帖子代码,然后把代码放到普通主题帖子里,这样就可以实现附件图片的“支持楼主”按钮,会员点击后会同时增加2个变量的数值,一个是主题列表上的“支持”(取代原来的票数),一个是会员属性的“支持数”。
    我自己尝试过把代码复制到某些位置上,但老是出现错误,自己不懂CGI~乱试。。呵呵。

    我自己再修改看看,再不行就回来请教两位。

  • 《AI人工智能》我还没有看呢~~手头上只有一张他的原声大碟,看过影片再听CD才更有味道。

    困了~睡觉去~

  • 近来事情比较多。自己的坛子也无暇顾及,抱歉了。

  • 下面引用由77877在 2005/6/24 02:35pm 发表的内容:

    奇怪,
    http://www.leohacks.com/cgi-bin/topic.cgi?forum=5&topic=197(在二楼提及的方法),所上传的文件bean.cgi里面找不到$addjy的值,不明白它的值是怎样根据点击次数增加的。



    看到这里了吗?

                   $memberdata[28]+=$change;
                   $memberdata[29]+=$change;

    这个就是 经验 和 魅力 啊。
  • 大家都有自己的工作要忙,有空的时候帮我解答,我都很高兴了~~怎么会怪坛主呢。

    明白了~~大概是指增加用户数据文件里的第XX个值,对吧?

    如果把这个插件修改成以下功能,应该怎样做呢?

    1、评价按钮(支持、反对)放在 TOPIC.cgi页面楼主帖子里,而不是BEAN.cgi;
    2、加楼主$addjy值时不会减少评价人的魅力值(这个我修改了,但不知道修改得好不好);
    3、评价按钮只出现在楼主帖子里( 这个是添加if($editpostnumber eq '1')吧  ),所有会员(包括管理员)才能看到评价按钮,而且只能评价一次(只知道在评价生成的文件里查找是否有符合的ID,从而确定能否参与评价,不知道怎样通过代码去实现),管理员可以看到参与评价的会员列表(列出评价生成的文件里所有ID?不知道怎样通过代码去实现)。


  • MX 我好久没有看了。而且和XP 和LeoBBSx 差别都很大的。所以。。也只能从思路上说说了。

    大概是指增加用户数据文件里的第XX个值,对吧?

    可以这么说,只是这个第XX是从0开始算的。。 实际上是个数组,可以对照getmenber里面的次序来判断。

    评价按钮(支持、反对)放在 TOPIC.cgi页面楼主帖子里,而不是BEAN.cgi;

    把连接直接放过去估计就好了吧? MX的topic.cgi我没有。看了半天也没有猜测出来。


    2、加楼主$addjy值时不会减少评价人的魅力值(这个我修改了,但不知道修改得好不好);

    是不消耗那个20点评价值吧? 直接吧 $memberdata[29]-=20; 删除掉也就好了:)


    3、评价按钮只出现在楼主帖子里(这个是添加if($editpostnumber eq '1')吧  ),所有会员(包括管理员)才能看到评价按钮,而且只能评价一次(只知道在评价生成的文件里查找是否有符合的ID,从而确定能否参与评价,不知道怎样通过代码去实现),管理员可以看到参与评价的会员列表(列出评价生成的文件里所有ID?不知道怎样通过代码去实现)。


    恩。。 加 $editpostnumber eq '1' 或者 $editpostnumber == 1 都可以吧。 但是 用 == 1 好一点。是斑竹看见吧? 可以参考现在的威望的显示, 基本上是判断 $mymembercode 值(也许是$membercode?这个MX和Leobbsx不同)。如果你用的这个程序,判断 $inawarded ,如果 $inawarded = "yes" 就说明已经评价过了。如果等于'no'就说明没有评价过。

    列出评价生成的文件里所有ID? 比较消耗资源。不知道你现在存储结构取消了非斑竹的评价是否一样?但是完全可以参考code.cgi里面显示买卖帖子的所有名单来实现。



  • == 1  是绝对的而  eq '1'  不是绝对的,或者说 1 是常数  而 '1' 是变量或数组什么的,所以$editpostnumber == 1 比 $editpostnumber eq '1'  安全,对吗?


    MX所有会员值是这样:
    $membercode eq 'me'  会员
                  'mo'  斑竹
                  'smo' 总斑竹
                  'ad'  坛主

    把连接直接放过去估计就好了吧? MX的topic.cgi我没有。看了半天也没有猜测出来。


    评价功能是这样的:

    楼主帖子里面的评价按钮(帖子地址 topic.cgi?forum=9&topic=10083&show=0)

    原代码:

    http://easun.org/upload/early/7_1119806030.jpg

    修改后:

    http://easun.org/upload/early/4_1119805143.jpg



    -------------------------------------------

    点击评价按钮后出现地址为:bean.cgi?forum=9&topic=10083&reply=0 的页面,上面有2个按钮

    原文件是这样:
    http://easun.org/upload/early/6_1119805495.jpg

    后来觉得其他东西没有用,就删掉了(只是把文字、颜色和框架删了,变量的代码不知道删哪些~所以没有删除)

    http://easun.org/upload/early/5_1119805175.jpg

    --------------------------

    点击反对(支持)按钮后会出现确定页面 (bean.cgi?action=punish&forum=9&topic=10083&reply=0&mode=) 类似在投票帖子里提交投票后打开的确认页(图片不贴上来了,我这样解析,以后的新人看见应该明白吧 )


    问题来了:

    看不出bean.cgi里哪段代码是提交按钮后执行的,况且在topic.cgi页面上提交执行 bean.cgi 的代码这样的跨页面提交真的不懂

  • 放上我的topic.cgihttp://easun.org/upload/early/topic_1119807551.rar

  • 没用过这个……
    不过按你说的,这不算跨页面提交啊,你在topic页面上点提交,就会打开一个窗口,应该是这句
    onclick="openScript('bean.cgi?forum=$inforum&topic=$intopic&reply=$rrn',500,400)"
    这已经进入了bean.cgi页面了,它里面应该就是通过表单来提交处理数据了吧?

    PS 你删了后的界面还真……简洁。

  • 我是想去掉TOPIC.CGI上的“评价”,把BEAN,CGI里面的“反对”、“支持”按钮放到TPOIC.CGI页面上去代替“评价”,从而不用进入BEAN,CGI就能点击“反对”、“支持”。

Add a Reply

Forum Groups

Good Perl Books

Perl 學習手札

作者:簡信昌

Perl 學習手札 , 一本优秀的中文Perl在线学习资料。

Perl 程序讨论区

12 50

Last Topic: [注意]本区文章归档区 by 路杨 on Oct 16, 2006

事物处理及其他

113 1410

Last Topic: 踩个脚印 by 眼睛oo on Dec 4, 2010

测试私密区

测试私密区

18 88

Notice: 用于测试程序或者不可告人之秘密。不要问我要密码哦。。[此为原LB_ES论坛系统保留项,只限原有权限朋友进入,不再接受注册]

OpenID accepted here Learn more about OpenID