制作如下效果图
1、创建一个类文件(/app/user/cls/message.cls.php),添加如下代码
<?php class message_user { public $G; public function __construct(&$G) { $this->G = $G; } public function _init() { $this->pdosql = $this->G->make('pdosql'); $this->db = $this->G->make('pepdo'); $this->pg = $this->G->make('pg'); $this->ev = $this->G->make('ev'); } //发送站内信息,包含(发送者、接收者、发送内容) public function sendMessage($sender,$reciver,$content) { $args['message_sendtime'] = TIME; $args['message_send_userid'] = $sender; $args['message_receive_userid'] = $reciver; $args['message_content'] = $content; $data = array('message',$args); $sql = $this->pdosql->makeInsert($data); $this->db->exec($sql); return $this->db->lastInsertId(); } //获取接收者信息 public function getReciveMessageByUserid($page,$number = 20,$userid){ $page = $page > 0?$page:1; $r = array(); $data = array(false,'message',array(array("AND","message_receive_userid = :message_receive_userid",'message_receive_userid',$userid)),false,array("message_id"),array(intval($page-1)*$number,$number)); $sql = $this->pdosql->makeSelect($data); $r['data']= $this->db->fetchAll($sql,"message_id"); $data = array('count(*) AS number',array('message'),array(array("AND","message_receive_userid = :message_receive_userid",'message_receive_userid',$userid),array("AND","message_ok = 0"))); $sql = $this->pdosql->makeSelect($data); $t = $this->db->fetch($sql); $pages = $this->pg->outPage($this->pg->getPagesNumber($t['number'],$number),$page); $r['pages'] = $pages; $r['number'] = $t['number']; return $r; } } ?>
2、在控制器中加入文件(/app/user/controller/message.center.php),加入如下代码
<?php /* * Created on 2017-8-31 * 站内信息中心 */ class action extends app { public function display() { $this->message = $this->G->make('message','user'); $action = $this->ev->url(3); if(!method_exists($this,$action)) $action = "index"; $this->$action(); exit; } private function index() { $page = $this->ev->get('page'); $page = $page > 0?$page:1; $userid=$this->_user['sessionuserid']; $this->message->sendMessage(1,12,'你好');//用户测试,测试完成请注释; $messages=$this->message->getReciveMessageByUserid($page,10,$userid); //var_dump($messages); $this->tpl->assign('messages',$messages["data"]); $this->tpl->assign('page',$page); $this->tpl->assign('pages',$messages["pages"]); $this->tpl->display('message'); } } ?>
3、模板文件中(/app/user/tpls/center/message.tpl)加入如下代码
{x2;include:header} <body> {x2;include:nav} <div class="container-fluid"> <div class="row-fluid"> <div class="main"> <div class="col-xs-2" style="padding-top:10px;margin-bottom:0px;"> {x2;include:menu} </div> <div class="col-xs-10" id="datacontent"> <div class="box itembox" style="margin-bottom:0px;border-bottom:1px solid #CCCCCC;"> <div class="col-xs-12"> <ol class="breadcrumb"> <li><a href="index.php">首页</a></li> <li class="active">站内信息</li> </ol> </div> </div> <div class="box itembox" style="padding-top:10px;"> <h4 class="title">站内信息</h4> <ol> {x2;tree:$messages,msg,qid} <li><a href="#">{x2;realhtml:v:msg['message_content']}</a></li> {x2;endtree} </ol> <nav aria-label="Page navigation"> <ul class="pagination"> {x2;$pages} </ul> </nav> </div> </div> </div> </div> </div> {x2;include:footer} </body> </html>
4、在数据库中插入两个数据表(前缀message、前缀message_category),分别是信息和分类表
信息表
CREATE TABLE IF NOT EXISTS `x2_message` ( `message_id` int(11) NOT NULL AUTO_INCREMENT, `message_send_userid` int(11) NOT NULL COMMENT '发生人', `message_send_time` int(11) NOT NULL COMMENT '发送时间', `message_receive_userid` int(11) NOT NULL COMMENT '信息接收者用户ID', `message_receive_time` int(11) NOT NULL COMMENT '接收者查看信息时间', `message_category` int(11) NOT NULL COMMENT '信息分类', `message_title` varchar(100) NOT NULL COMMENT '标题', `message_content` text NOT NULL COMMENT '内容', `message_ok` int(1) NOT NULL COMMENT '是否有效', PRIMARY KEY (`message_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=196 ;
分类表
CREATE TABLE IF NOT EXISTS `x2_message_category` ( `category_id` int(11) NOT NULL AUTO_INCREMENT, `category_label` varchar(50) NOT NULL COMMENT '分类标签', `category_ok` int(1) NOT NULL COMMENT '是否有效', PRIMARY KEY (`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
在浏览器输入(你的网站/index.php?user-center-message)进行访问。
或在用户中心加入菜单再测试(/app/user/tpls/center/menu.tpl)
<li class="list-group-item {x2;if:$method == 'message'}active{x2;endif}"> {x2;if:$method == 'message'}站内信息 {x2;else} <a href="index.php?user-center-message">站内信息</a> {x2;endif} </li>
至此你的站内信息已经添加完成