在模块中添加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){ / / 发送通知邮件 }