AKCMS 4.0.3利用文章评论制作自定义字段的留言本

目前akcms没有留言本功能,本文是将文章评论做成留言本功能;文章的评论目前只有usernamemessage两个字段,一般留言本还需要增加比如电话,邮箱等字段,这里就需要增加字段。

第一步:先确定你留言所需字段,比如我就需要: 姓名、电话号码、邮箱、内容四个字段

第二步:打开您的mysql数据库,评论表ak_comments,发现目前有字段username message 和我上面的 姓名 内容 对应,我需要的电话号码 邮箱 没得。于是手动建立。如下图:

1.jpg

Update:2016-03-20
phone的字段类型不要再选择上图,在新akcms版本中不行,可以选个text类型。

.

第三步:打开fore/comment.php,如下图,红框部分就是我根据新增字段 对应添加的内容:

2.jpg

第四步:在你的前台模板新建一个,guestbook.htm 内容如下,注意js、html代码中涉及到字段:

<!DOCTYPE html>
<html lang="zh-CN">
<meta charset="gbk">
<head>
    <title><{$title}></title>
    <script language="javascript" src="http://pc1.gtimg.com/js/jquery-1.4.4.min.js"></script>
    <script>
        function submitcontent() { 
            var username = $("#username").val(); 
            var phone = $("#phone").val(); 
            var email = $("#email").val(); 
            var comment = $("#comment").val(); 
            $.ajax({ 
                    url: "<{$home}>/akcms_comment.php", 
                    type: 'POST', 
                    dataType: 'text', 
                    data: { itemid:<{$id}>,
                    username: username, 
                    phone: phone, 
                    email: email, 
                    comment: comment 
                }, 
                timeout: 5000, 
                error: function () { 
                    alert('Error'); 
                }, 
                success: function (str) { 
                    if (str == "0") { alert("您的留言已经成功提交!"); 
                        window.location.reload(); 
                    }
                    else { 
                        alert("非常抱歉,出现错误,错误号:" + str); 
                    } 
                }
            });
        }
    </script>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="5">
    <{getcomments bandindex="1" page=$page itemid=$id num="2" includesub="1"
        template="
        <tr>
            <td>字段内容的读取:</td>
            <td><p>[username]</p><p>[phone]</p><p>[email]</p><p>[message]</p></td>
        </tr>
    "}>
</table>
<table border="0" cellspacing="0" cellpadding="5">
    <tr>
        <td width="100">您的姓名:</td>
        <td><input type="text" id="username" name="username" /></td>
    </tr>
    <tr>
        <td width="100">电话号码:</td>
        <td><input type="text" id="phone" name="phone" /></td>
    </tr>
    <tr>
        <td width="100">您的邮箱:</td>
        <td><input type="text" id="email" name="email" /></td>
    </tr>
    <tr>
        <td width="100">留言内容:</td>
        <td><textarea id="comment" name="comment"></textarea></td>
    </tr>
    <tr>
        <td colspan="2" align="right"><input type="button" value="发表留言" onclick="submitcontent();" /></td>
    </tr>
</table>
</body>
</html>

第五步:在你的后台“页面” 新建一个“在线留言”,对应模板guestbook.htm

1.jpg

点击预览就可以看到留言本地址了。

到此,基本就实现了你想要什么字段,就如此这般添加对应的字段,是在评论表里面添加,所以这些字段也是可以用在文章的评论里的。刚刚新建页面“在线留言”实际上就是为了获得一个文章id吧,我们把在这个页面的全部评论就当成了全站的留言,反正用户不晓得。

第六步:在后台的评论管理页面,如何显示这些新增字段。

打开页面admincp.php,搜索if(!in_array($comment['itemid'], $items)) $items[] = $comment['itemid'],这段代码很乱。这句{$lan['name']}:".htmlspecialchars($comment['username'])." | 后面添加 :

电话号码:".htmlspecialchars($comment['phone'])." &nbsp;| 
电子邮箱:".htmlspecialchars($comment['email'])." &nbsp;|

就把新增的字段在后台添加了。

以上提供的是一个思路。不过很遗憾,目前ak评论不能分页,我曾经付费让akcms开发者馒头写了分页,但那分页代码我不知道如何分离出来。目前akcms已经升级到5.0.3版本,根据馒头说,他会将评论作为插件独立出来,到时候应该有个完善的解决方案。

**Update by 2013.04.21
若按照以上方法制作出的留言本在提交留言时报错,请检查下你的设置:**

2.jpg