聚焦曹妃甸

 找回密码
 点击注册
查看: 12290|回复: 7

dedecms插件开发之留言模块

[复制链接]
  • TA的每日心情
    工作中
    3 天前
  • 签到天数: 1988 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-1-24 15:07:02 | 显示全部楼层 |阅读模式
    dedecms是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,有众多个人站长的拥趸。也是初级php程序员必需熟悉的主流程序。因为项目中要新增留言评论功能,而dedecms官方的留言板有些鸡肋,所以自已动手开发评论插件.方法/步骤1 x8 _+ U7 c, J
    • 1

      9 f# O6 j5 @2 }4 w4 Z建立基本的目录结构
      9 ?- F. U& t% @, A  ~4 b" h首先,新建以下文件
      . x# m' \4 a! e1 K6 Aplus/comment.php
      3 N: b/ Z0 W9 d. T8 E! O4 o& P1 Rdede/comment.php2 @! J& E. q- P7 ~& r" [7 r
      dede/templets/comment_list.htm
      7 p" x- N  X  m( Q9 Ndede/templets/comment_add.htm
      . i4 i1 ?7 q6 z  vdede/templets/comment_edit.htm/ J/ g1 b( n+ V/ ~' _* |
      dede/templets/comment_reply.htm( J  l6 C& y* p) \
      ! s% {4 r# r8 O* k2 J+ P
    • 3 B$ b/ x3 o  }2 t0 ]
      填写插件开发者信息' g9 y! i0 }" P
      打开后台->模块->模块管理->模块生成向导,按提示填写相关信息! x0 i+ h: X/ _  ?1 H% v* ^
      # b$ y/ `/ F9 b9 M
      9 Y# \; \3 O5 O

      1 J$ z. J, a' b  K  k
    • 4 ~2 Y. V8 _- E  P2 ?! W. H) t
      填写菜单信息:
      ; ]5 y* N. a/ P3 l, Z3 G<m:top name='评论管理' c='6,' display='block' rank=''>
      " J' Q2 b5 D  {7 J+ p  <m:item name='评论列表' link=comment.php' rank='' target='main' />1 @1 t3 |/ B1 P0 T( s" r5 C
      </m:top>) c+ \# v% L$ l8 B. P  B  l
      如果你不想单分出一个主菜单,而是将菜单添加到“辅助插件”下,可以在安装信息中添加下内容:( H) `" h, O& J( B' U4 Y
      Delete From `#@__plus` where plusname like '评论管理';
      4 D! p; M+ x3 ^; G7 z8 ^INSERT INTO `#@__plus` (`plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES ('评论管理', '<m:item name=''评论管理'' link=''comment.php'' rank=''plus_评论管理'' target=''main'' />', '', '子海', 1, '');4 j* P+ z: t# w3 O9 w) O4 Y
      然后在卸载信息将附加一句:0 k! p' p1 U- Z$ k6 u  l( Y( I3 p
      Delete From `#@__plus` where plusname like '评论管理';2 z1 f: |) r0 z3 }4 l) Y
      ) l1 E. W: w/ I- c

      1 e5 q  c. Q8 r- W4 @9 k2 L2 I$ [2 w( `; `0 E9 R& C/ q
    • ! A1 `' a% A4 I1 c, U( G
      填写安装信息:/ P& S& _, X$ ]
      DROP TABLE IF EXISTS `#@__comment`;, T0 i+ j6 ?+ z
      CREATE TABLE `#@__comment` (5 G8 U, }5 r$ w  J
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      9 ^" n& S  r- t6 u' j `parent_id` int(10) unsigned NOT NULL DEFAULT '0',
      ' n% T' a0 k6 w `username` varchar(10) NOT NULL DEFAULT ''," y1 p2 W. o$ B, |7 t  E. _6 N
      `comment` varchar(255) NOT NULL DEFAULT '',& l! c) X0 m* S2 i% I
      `rank` tinyint(1) unsigned NOT NULL,1 [) ?+ ?' h  V: a' r  A4 e( b! \' ^
      `addtime` int(10) unsigned NOT NULL DEFAULT '0',- G$ \8 o) b: B
        PRIMARY KEY(`id`)
      * {" v3 E* H: k5 B2 T; j2 g/ P) TYPE=MyISAM;
      7 \, W" |2 K/ C+ V9 C3 C- o
      7 _* F% t4 |$ A( F2 {* I
      9 ?9 p5 O0 F" w# ^: |
      " N: A6 a+ Y# y* ~# p
    • ! a9 `3 {* J! j$ E/ s- O' i1 l! Y
      填写卸载信息:DROP TABLE IF EXISTS `#@__comment`;
      3 ~/ {0 H/ x2 d* R; _( h
      $ i" Z8 R* h. K8 `8 {+ f2 S  a, n9 P

      * o* G* b$ {1 c, Y# e7 Z
    • ) q$ \& h: Q8 P8 ]5 ^& d. }. b
      填写文件列表
      % ?) o. ?$ g1 K  E& z4 w  {5 u# O: o../plus/comment.php9 k# W1 J  N4 R& H/ v. a* n  n
      ../dede/comment.php
      $ t7 x' t( Q7 B$ V8 u; {../dede/templets/comment_list.htm. ?: I, Y, n7 O
      ../dede/templets/comment_add.htm
      + o% |3 v! b- W7 I../dede/templets/comment_edit.htm
      ( l3 j' `- M$ B. z) H- @../dede/templets/comment_reply.htm
      ' E; x& S, ?3 t2 w# c8 @最后点击提交即可% l" Y0 f% w% M! l  }

      . i2 r7 U! C- @6 {
      # z" e& M% b( f
      7 `0 _1 q" Q5 b$ l- O/ r- q
    • 6 r# @* F7 K- t/ h9 O6 s0 j5 h8 I
      后台处理文件之评论列表
      # x  a( d+ v& O* t" D4 W1 `$dlist = new DataListCP();
      7 }" m2 z7 B1 ]# h8 ~: F$dlist->SetTemplet(DEDEADMIN."/templets/comment_list.htm");# L5 r/ w1 y. |( L
      $sql = 'SELECT * FROM `#@__comment` ORDER BY id';
      9 g3 k; R6 u8 Q6 _7 B$dlist->SetSource($sql);: W+ k7 K& J& |1 t! r( {  C* q
      $dlist->display();
      - ~$ m$ ^5 c$ {( O4 f0 C4 a6 X( M( P  F- Q

    • 6 l4 V+ h1 O) N7 G& ?2 U; C后台处理文件之添加评论$ d+ v  B# V  n7 e$ i
      if($a== 'add'){9 ?' c9 J4 E, t0 R5 C% _; `
      if(isset($_POST['send'])){6 c. t5 G  X" z* R) X) P/ y
      $comment = cn_substrR($comment,250);
      4 K9 T/ Z6 `# Q' ^" c1 m+ W$username = cn_substrR($username,50);
      , `1 y1 A* j. `6 l$ }8 n$time = time();
      + F0 z' Y+ h0 ]( U6 `4 H7 T" X$sql = "INSERT INTO `#@__comment`(comment,rank,username,addtime) VALUES('$comment',$rank,'$username',$time)";
      - X9 q1 j7 V0 U  T( A4 Bif(!$dsql->ExecuteNoneQuery($sql)){& _  q8 V& ^8 x9 I4 ]+ C
      $gerr = $dsql->GetError();7 v% R6 |( K9 K
      ShowMsg("回复评论出错。错误信息:".$gerr."!",'javascript:;');
      ) P! @  D+ C& h* B2 B# `/ ^5 lexit();
      - D! o( a( n" b6 s}1 U+ {( T- I- I* [0 v' I: ]" V
      ShowMsg("添加成功!",$ENV_GOBACK_URL);1 }# h! L. w# C$ w. {$ i: Y
      exit();3 ~/ A8 h3 C5 i5 ^+ J7 O# X6 O
      }
      ! `1 B3 }+ d9 V' }2 @* J  Uinclude DedeInclude("templets/comment_add.htm");
      ! m, n* ?9 g9 h# g# B( F}
      ; S% f. Q: t3 G5 w' Y! |  a: Q1 c  `+ O& [8 Z

    • 1 Q& O9 {+ j% v) v; t后台处理文件之编辑评论5 [7 F! W# ^# `7 ?! b. {: h! y
      if($a == 'edit'){
      . J- ~4 S% D: f' Z
      2 ~# G/ n/ d# N9 zif(isset($_POST['send'])){& `4 g0 O7 F4 F/ x- `
      $comment = cn_substrR($comment,250);" |+ }3 X5 |# ~' ^0 C, j
      $username = cn_substrR($username,50);  a' u9 `* A- ?4 X1 v  U
      $sql = "UPDATE `#@__comment` SET comment='$comment',username='$username',rank=$rank WHERE id=$id";4 c$ ~' g4 V  V1 a- ~% k  R
      if(!$dsql->ExecuteNoneQuery($sql)){
      5 n0 D6 a7 [- `# x! s% i" ^$gerr = $dsql->GetError();* }  {, R: S4 \/ n% \
      ShowMsg("修改评论出错。错误信息:".$gerr."!",'javascript:;');8 e2 F: q) Z# b: B' y
      exit();. D1 X. D8 F7 o3 ~4 S! L
      }
      & }- [) n; ]9 c: }) k" X* R ShowMsg("修改成功!",$ENV_GOBACK_URL);( R2 g. {2 u* K3 b' S8 j) m
      exit();
      # a3 A+ O8 K& k8 E; G8 W4 [: t  j}4 S* T0 V2 @! O" D/ `+ r
      if(empty($id)){
      6 ]' ^8 T) O# O0 A2 a1 w, fShowMsg("参数无效!",$ENV_GOBACK_URL);
      ( u$ r7 F* l7 R% A  ]% L* W/ O; V9 Nexit();  n. W# `- P4 _3 y5 @0 m
      }9 E! A8 y+ `9 C3 ]- u9 n# P
      $row = $dsql->GetOne("SELECT * FROM `#@__comment` WHERE id='$id'");
      % I! j6 i6 y' ^9 t. @include DedeInclude("templets/comment_edit.htm");" J6 X! Y& j, |5 g
      }
      6 b6 ]& h4 V. _6 n7 d6 i. X* N  u$ c9 M
        j9 }, i. C: l* u4 K

      5 T0 t) ]5 d  u7 b- i$ s

    • - @1 i, V/ C, T$ u+ }2 |' f9 Y后台处理文件之回复评论
      , z4 C1 Y# w* o; `5 d* L& yif($a== 'reply'){  t$ J7 M+ X4 _
      if(isset($_POST['send'])){0 _5 i, s2 [( S: v
      $comment = cn_substrR($comment,255);3 e% r& y! ~" @) `+ q
      $username = cn_substrR($username,50);
      $ x+ Z! V  _1 Z* ?' g$time = time();
      & E) d! X' o/ N( F/ D$sql = "INSERT INTO `#@__comment`(parent_id,comment,username,addtime) VALUES($id,'$comment','$username',$time)";% q  \* L8 _* h- Y- V2 k( @
      if(!$dsql->ExecuteNoneQuery($sql)){& z$ g: j  a+ j9 L- \6 G
      $gerr = $dsql->GetError();( _: T6 r9 ^& s! @
      ShowMsg("回复评论出错。错误信息:".$gerr."!",'javascript:;');9 _5 s" M3 F- c! A/ ^' B9 @" P
      exit();
      ( e8 s) y" U/ c) C/ Y6 b) n}8 Y( K& b3 G6 z4 O8 X
      ShowMsg("回复成功!",$ENV_GOBACK_URL);' D- N9 }  d/ a0 m9 z3 g! W
      exit();
      : |1 {" @& u. `( A  E9 l4 `}8 d) l% d) \! ~7 h3 ~, r
      $row = $dsql->GetOne("SELECT * FROM `#@__comment` WHERE id='$id'");  }; \( h& `/ s  t" p6 L3 G
      include DedeInclude("templets/comment_reply.htm");! y5 ~( {9 p  Y" Z& O
      }
      8 g  k4 p. x4 @8 O7 }. k" k/ B8 T, _0 C0 Q5 O
      ! L" ^" ]/ z! s4 |' b  _( T+ I4 R
      2 W9 r0 l4 M7 a" r  L( t5 G1 ?) F

    • " U) \$ a9 C, G! U6 ?* w后台处理文件之删除评论, b. M3 B+ B# \& y) k
      if($a == 'delete'){
      & I1 |' N& }8 \; R7 ]6 oif( !empty($aid) && empty($ids) )
      , |1 [! Z. n5 D" k; N( D( ]2 g{
      $ ?+ t. U/ ^8 D4 F& K$ V$ids = $aid;
      1 L) _& F) O# q6 X/ h}; b. [& R9 B; @2 F2 s
      if($ids=='')/ j: d7 D- H4 n# }" I% |
      {
      % q: x8 s: |( n; B8 u# yShowMsg("参数无效!",$ENV_GOBACK_URL);
      1 P+ z2 M. A- ?0 hexit();4 V0 n% l$ O( D3 w
      }* t+ l! s* [. f. I5 @% u, _2 w! }
      $ids_arr = explode("`",$ids);" L5 W& `2 n3 z- ~
      $okaids = Array();: ?& y; l, h- `7 g9 _9 I, l( J9 G( D
      ( c4 ]) D8 w' A6 L4 a5 b4 R3 M
      foreach($ids_arr as $aid)' b' _4 D3 [. ?  Q" Y* j$ x7 C
      {" H1 a6 c- o. Z0 G3 C$ E  }
      if(!isset($okaids[$aid]))) ^% [: j7 G( M/ y8 e' p
      {
      , B4 M; ]7 j" y$sql = 'DELETE FROM `#@__comment` WHERE id='.$aid;9 C+ C3 C# y! `4 _3 S1 A( F
      $dsql->ExecuteNoneQuery($sql);
      9 w5 L7 U' }% B9 L}
      2 X3 F2 Y4 m/ t- {4 jelse% [2 g: \9 M. B3 [
      {
      1 n7 z! F1 c3 W4 b! d$okaids[$aid] = 1;! K) I& J! l7 s
      }- E7 ^( y8 ^" `2 B+ F& \
      }# e) b5 J$ K- X' h0 Q
      ShowMsg("成功删除指定的咨询!",$ENV_GOBACK_URL);
      . n+ h3 O" S; @3 E# @4 aexit();( T3 E5 B: x/ {6 [- O9 _
      ) [' B/ f/ A! R: }$ Q3 D
      }
      ' }% i4 T3 g# I' k

      - ~3 p- v( Z1 H( T, _& [9 }) F
        v$ H) n0 K/ ?. o6 J5 \+ D5 m( |
      & B5 m( K0 a' F9 ~
      ; b. Z' h( d# T3 V7 N& q3 e# l) q
      2 K# @; R# M" p. H' w

    ; @! W, e5 n; s& R! y; o/ s( J4 Y+ \2 |8 n

    该用户从未签到

    发表于 2018-1-24 15:15:58 | 显示全部楼层
    {:5_409:}
  • TA的每日心情
    开心
    2011-9-30 10:00
  • 签到天数: 3 天

    连续签到: 3 天

    [LV.2]偶尔看看I

    发表于 2018-1-24 16:06:43 | 显示全部楼层
    挖出老帖学习

    该用户从未签到

    发表于 2018-1-24 16:57:27 | 显示全部楼层
    有道理。。。

    该用户从未签到

    发表于 2018-1-24 17:53:31 | 显示全部楼层
    写的真的很不错

    该用户从未签到

    发表于 2018-1-24 19:01:03 | 显示全部楼层
    好好 学习了 确实不错

    该用户从未签到

    发表于 2018-1-24 20:07:24 | 显示全部楼层
    谢谢楼主,共同发展
  • TA的每日心情
    开心
    2019-2-26 09:48
  • 签到天数: 397 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-1-24 23:22:19 | 显示全部楼层
    这太深奥了
    您需要登录后才可以回帖 登录 | 点击注册

    本版积分规则

    QQ|小黑屋|手机版|手机APP下载|聚焦曹妃甸 ( 冀ICP备16013160号-2 )|申请友情链接  

    GMT+8, 2019-3-24 14:54

    Powered by 曹妃甸信息港 X3.2

    © 2008-2015 thxxw Inc.

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