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

小明明
小明明 This guy is lazy,Introduction has not been set

13 People liked this article · 3894 views

引言 今天有时间登录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>

编后语 下节我们说说怎么获得更多的数据,并列举一些可能用到的数据等。感谢您的关注。

Published on 2015-07-25 10:39

Disclaimers:

This document is written by 小明明 Original published on WeCenter ,The copyright belongs to the author。

Log in,More exciting content waiting for you to find,Contribute wonderful answers,Participate in comment interaction

go Sign in! No accountgoregister

小明明
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
很好的普及知识
All Rights Reserved Powered BY WeCenter V4.1.0 © 2024 粤ICP备17116736号