【WeCenter二次开发】让自己的首页与众不同(上)

小明明
小明明 这家伙很懒,还没有设置简介

13 人点赞了该文章 · 4097 浏览

引言 今天有时间登录WeCenter社区,看到网友steven_lidi问“能不能连载”。其实发第一篇时并没有想过会写一个教程式的连载文章,仅仅是自己使用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()方法。
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-07-25 10:39

免责声明:

本文由 小明明 原创发布于 WeCenter ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

小明明
2015-09-12 06:49
有c语言基础,自学两年左右。开始时是看书——基本知识和实战教程。后来研读程序源码。多用百度和一些教程论坛/网站学习函数。例如,w3school。刚刚接触MVC编程模式不久。我知道的都很基础,还在学习中。。。
qisong13579
2015-08-02 16:54
请问能否写一个单独模块置顶文章的教程呢?
steven_lidi
2015-07-27 16:12
感谢楼主,小白向你致敬。请问楼主什么基础学的PHP?是自学还是报班?报的哪家的?学了多久这个水准啊?
小明明
2015-07-27 16:01
@steven_lidi 第二篇
小明明
2015-07-25 15:33
谢谢。会继续努力。。
jiaoshuren
2015-07-25 13:11
写的太棒了,思路清晰,受益匪浅,建议持续更新,全面解剖wecenter,哈哈
eager
2015-07-25 10:59
很好的普及知识