【WeCenter二次开发】让自己的首页与众不同(上)
此篇是即兴想到的,来具体解释第一篇所提到的程序执行流程。 涉及文件: app/explore/main.php(文件一) model/posts.php(文件二) view/default/explore/index.tpl.htm(文件三) 按顺序打开这三个文件。 第一个问题:我们是怎么访问到首页的? 第一步,我们输入我们网站的地址执行index.php 第二步,index.php包含system下核心文件,开始系统初始化 第三步,(控制器层)根据三个参数第一个$_GET[c]、$_GET[act]、$_GET[app]访问到文件一的index_action()方法。引言 今天有时间登录WeCenter社区,看到网友steven_lidi问“能不能连载”。其实发第一篇时并没有想过会写一个教程式的连载文章,仅仅是自己使用WeCenter开发和在社区看到网友们的一些问题时的有感而发。我也很愿意分享一些有用的东西,用我所理解的通俗的语言。
Array ( [c] => main [act] => index [app] => explore )第四步,(模型层)文件一通过下面的类似语句访问执行文件二中的方法。
//文件一 line 134 $posts_list = $this->model('posts')->get_posts_list(null, $_GET['page'], get_setting('contents_per_page'), $_GET['sort_type'], null, $category_info['id'], $_GET['answer_count'], $_GET['day'], $_GET['is_recommend']);第五步,文件二通过下面的类似语句读写数据库数据。
//文件二 line 34 $result = $this->fetch_row('question', 'question_id = ' . intval($post_id));第六步,文件一通过下面类似的语句包装数据输出模板,把数据展示出来。
//文件一 line 154-157 TPL::assign('posts_list', $posts_list); TPL::assign('posts_list_bit', TPL::output('explore/ajax/list', false)); TPL::output('explore/index');最后我们就看到首页的效果了。 第二个问题:我们都有哪些数据? 1.登录用户的资料(登录后有); 2.文章、问题、活动列表; 3.热门话题、热门用户(数量后台可设置) 4.专题列表 第三个问题:(视图层内容修改)侧边增加登录引导(未登录)和登录用户信息(登录) 打开文件三。 首先我们要判断用户是否登录。$this->user_id?yes:no; 然后我们分别显示登录注册和个人资料。 具体做法就是在文件三第63\64之间添加类似下面的代码。
<div class="aw-mod aw-text-align-justify"> <div class="mod-head"> <?php ($this->user_id)?_e('欢迎您,%s', $this->user_info['user_name']):_e('用户登录');?> </div> <div class="mod-body"> <?php if($this->user_id){?> <a href="people/<?php echo $this->user_info['url_token'];?>">个人主页</a> <a href="account/setting/">设置</a> <a href="account/logout/">退出</a> <?php }else{?> <a href="account/login/">登陆</a> <a href="account/register/">注册</a> <?php }?> </div> </div>第四个问题:(数据层获取数据)获得文章数或问题数。 打开文件一。在156行加入以下类似代码。
TPL::assign('users_count', $this->model('system')->count('users')); //用户数 TPL::assign('users_valid_email_count', $this->model('system')->count('users', 'valid_email = 1')); //已邮箱验证用户数 TPL::assign('question_count', $this->model('system')->count('question')); //问题总数 TPL::assign('answer_count', $this->model('system')->count('answer')); //回答总数 TPL::assign('answer_question_count', $this->model('system')->count('question', 'answer_count > 0'));//有回答的问题 TPL::assign('question_no_answer_count', $this->model('system')->count('question', 'answer_count = 0')); //待回复问题数 TPL::assign('best_answer_count', $this->model('system')->count('question', 'best_answer > 0')); //最佳答案数 TPL::assign('topic_count', $this->model('system')->count('topic')); //话题总数 TPL::assign('attach_count', $this->model('system')->count('attach')); TPL::assign('approval_question_count', $this->model('publish')->count('approval', "type = 'question'")); TPL::assign('approval_answer_count', $this->model('publish')->count('approval', "type = 'answer'")); //自行探究在文件三合适位置加入以下类似代码。
<p><?php echo $this->users_count;?> 用户共解答了 <?php echo $this->answer_question_count;?>个问题;</p> <p>还有<?php echo $this->question_no_answer_count;?> 问题等你解答;</p>
编后语 下节我们说说怎么获得更多的数据,并列举一些可能用到的数据等。感谢您的关注。
2015-09-12 06:49
2015-08-02 16:54
2015-07-27 16:12
2015-07-27 16:01
2015-07-25 15:33
2015-07-25 13:11
2015-07-25 10:59