在模块中添加XOOPS全局评论特性(Smarty版本)

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页 | 首页 | DedeCMS | 帝国CMS | Drupal | PHPCMS | PHP168 | Joomla | PowerEasy | SupeSite

步骤1:模块相关基本配置[ ]

在进行后面的步骤前,有两个变量你必须要准备好。它们是:

  • 每个条目的ID对应的键名(URL键值对方式,如:name=id,name就是键名),确定哪个评论将被添加。例如:在News模块中的'storyid',在XoopsPoll模块中的'poll_id'。
  • 当上述唯一的键值(id)通过HTTP GET方式请求传递时,对应文件显示该键值的条目。例如:News模块的文件'article.php',访问每一个article会显示 article.php?storyid=(这里填唯一的ID号)。同样的,XoopsPoll模块的文件'pollresults.php' 也是如此。

现在打开xoops_version.php加入下面列出的内容:

$modversion['hasComments'] = 1;
$modversion['comments']['itemName'] = 'value obtained in A';
$modversion['comments']['pageName'] = 'value obtained in B';

例如,在News模块中:

$modversion['hasComments'] = 1;
$modversion['comments']['itemName'] = 'storyid';
$modversion['comments']['pageName'] = 'article.php';

步骤2:相关文件准备[ ]

将下面的文件从web links模块中复制到你的模块目录

  • omment_new.php
  • comment_edit.php
  • comment_delete.php
  • comment_post.php
  • comment_reply.php

步骤3:文件内容修改[ ]

打开在步骤1 B中规定的文件(例如:News中的article.php),在包含footer.php前加入下面给出的语句

include XOOPS_ROOT_PATH.'/include/comment_view.php';

步骤4:模板制作[ ]

为模块打开适当的模板文件(News模块打开news_article.html文件),将下面列出的复制到显示评论的地方。当然你可以自定义HTML标签。

<div style="text-align: center; padding: 3px; margin: 3px;">
  <{$commentsnav}>
  <{$lang_notice}>
</div>

<div style="margin: 3px; padding: 3px;">
<!-- start comments loop -->
<{if $comment_mode == "flat"}>
  <{include file="db:system_comments_flat.html"}>
<{elseif $comment_mode == "thread"}>
  <{include file="db:system_comments_thread.html"}>
<{elseif $comment_mode == "nest"}>
  <{include file="db:system_comments_nest.html"}>
<{/if}>
<!-- end comments loop -->
</div>

从用户的角度看,那就是所有需要添加的内容。

从管理的角度,只要删除一个条目将导致依赖该条目的评论也被删除,同时用户发表的数量也因此更新,总是访问下面的函数。

function xoops_comment_delete(integer module_id , integer item_id)

例如在News模块中,只要删除一个news article,这个函数被如下方式访问:

xoops_comment_delete($xoopsModule->getVar('mid'), $storyid);

另一个有用的函数是xoops_comment_count(),它把模块的ID和条目的ID作为自己的参数并且返回规定的条目的评论总数。

function xoops_comment_count(integer module_id [, integer item_id])

如果item_id未被指定,则返回根据module_id规定的模块的评论的总数。

步骤5:回调函数(可根据需要选择)[ ]

建立回调函数

你可以通过在xoops_version.php中加入下面一行命令来指定回调函数:

$modversion['comments']['callback']['approve'] = 'function';

一个被核准的评论发送成功的话,函数将被执行。这包括评论被管理员发送,状态由'pending'改为'active'。一个以被核准的XoopsComment对象将被当作第一个而且也是唯一的参数。举例注意对象提交的评论应该会有用。

$modversion['comments']['callback']['update'] = 'function';

只要一个条目的状态为'active'的评论的总数发生变化,函数将被执行。两个参数将被当作键变量参数,条目唯一的ID作为第一个参数,而处于active状态的评论总数则作为第二个参数。

定义回调函数所在的文件名[ ]

例如

modules/mylinks/xoops_version.php

...
$modversion['comments']['callbackFile'] = 'include/comment_functions.php';
$modversion['comments']['callback']['approve'] = 'mylinks_com_approve';
$modversion['comments']['callback']['update'] = 'mylinks_com_update';
..


modules/mylinks/include/comment_functions.php

function mylinks_com_update($link_id, $total_num){
$db = $GLOBALS[‘xoopsDB’];
$sql = 'UPDATE '.$db->prefix('mylinks_links').' SET comments = '.intval($total_num).' WHERE lid = '.intval($link_id);
$db->query($sql);
}

function mylinks_com_approve(&$comment){
/ / 发送通知邮件
}