第一集:授人以鱼不如授人以渔,UCHome全面大解析培训活动开展一
继  授人以鱼不如授人以渔,UCHome全面大解析培训活动开展一之后,许多用户反应希望能从简单的开始,因此此系列活动进行相应的修改。本期主要介绍UCHOME的体系结构开始,一步一步教大家理解UCHOME。

UCHOME安装后的主要目录与文件介绍:

admin/      管理后台
api/      API函数[插件开发与模板等的修改不需要动此文件]
attachment/ 附件目录
data/   缓存目录,此目录要有777权限,系统相关缓存基本上都在这里了
   data/tpl_cache/ 模板缓存目录,注意,如果你的UCH白屏了,无法进入后台跟新缓存,通过FTP手工删除此目录下的所有文件即可相当于模板缓存的更新
image/  图片目录
language/   语言目录 ,跳转提示语言等
source/  PHP源程序目录
template/  模板目录
theme/ 个人主页目录
uc_client/ ucenter客户端 [插件开发与模板等的修改不需要动此文件]
以下是UCHOME根目录下常用文件【不常用的不在介绍】
admincp.php  后台管理入口文件
common.php  通用文件,所有的文件都要包含这个文件,在上篇已详细解释了内容
config.php  基本配置文件
cp.php     编辑日志、相册、活动等等相关编辑操作基本上都从这个文件入口
do.php   登录、注册、找回密码、相册批量上传、在需要密码的情况下才能查看日志相册、验证码、发送邮件、统计、邮件验证等行为的入口文件
editor.php  编辑器的入口文件,强烈建议您不用动他
magic.php  道具入口文件

network.php 随便看看等入口文件
space.php   个人空间、日志、相册、活动等入口文件

我们一般修改UCH主要涉及的入口文件有space.php  network.php  do.php  cp.php 这四个,那么我们如何根据你访问的URL判断涉及到那些PHP文件和模板文件,方便您的进一步修改!

好了,现在我们以最简单的do.php入口文件来分析下,
举个列子,如果我们使用找回密码功能,通常链接如下:do.php?ac=lostpasswd,而注册的链接一般分两种,一种是do.php?ac=后台自定义登录识别名
另一种是do.php?ac=随机
好了,我们进入do.php文件中继续看看

代码

 1 include_once('./common.php'); //上节说了,这个是公用文件,在上篇已详细解释了内容
 2 
 3 //获取方法
 4 $ac = empty($_GET['ac'])?'':$_GET['ac']; //获取do.php?ac中ac的值
 5 
 6 //自定义登录
 7 if($ac == $_SCONFIG['login_action']) {
 8 //这里的全局变量$_SCONFIG['login_action']就是ac=自定义标示名或那个随机串,如果相同则把原来的do.php?ac=XXXX抓换成类似效果do.php?ac=login
 9     $ac = 'login';
10 } elseif($ac == 'login') {
11     $ac = '';
12 }
13 if($ac == $_SCONFIG['register_action']) {
14 //这里的全局变量$_SCONFIG['register_action']
15 //就是ac=就是后面的自定义标示名或那个随机串,如果相同则把原来的do.php?ac=XXXX抓换成类似效果do.php?ac=register
16     $ac = 'register';
17 } elseif($ac == 'register') {
18     $ac = '';
19 }
20 
21 //允许的方法
22 //这里很重要,login对应的是登录,register定义的是注册,lostpasswd定义的是找回密码,与上面访问的URL是否是对应上了
23 //对应上面的do.php?ac=login,do.php?ac=register,do.php?ac=lostpasswd,其他类似!如果ac后的参数不在下面的数组中,则为非法。跳转到首页
24 $acs = array('login', 'register', 'lostpasswd', 'swfupload', 'inputpwd',
25     'ajax', 'seccode', 'sendmail', 'stat', 'emailcheck');
26 if(empty($ac) || !in_array($ac, $acs)) {
27     showmessage('enter_the_space', 'index.php', 0);
28 }
29 
30 //链接
31 $theurl = 'do.php?ac='.$ac;
32 //这是包含文件的意思,继续执行一下文件的意思,
33 //其中S_ROOT是UCHOME安装目录的常量
34 //根据下面的语句,我们可以这样判断,如果链接是do.php?ac=lostpasswd的话,程序继续执行source/do_lostpasswd.php文件!
35 include_once(S_ROOT.'./source/do_'.$ac.'.php');

不知道大家是否能理解,不理解多看几遍!

好了,我们找到source/do_lostpasswd.php文件看下,这个文件代码较多,我们不用管他,最主要的是我们要找到其对应的模板,
查找下include template这个语句【注:在其他php文件中可能有多个结果,那是因为不同条件下包含不同的模板】。你就会发现在末尾找到

include template('do_lostpasswd');

这就是模板名,这个记住规则,do_lostpasswd对应的模板是do_lostpasswd.htm名。那么这个文件在哪个位置呢?
我们系统目录template/下有 默认的default,blue,green这三个文件夹,对应不同的风格,如果你安装了其他风格,可能还有其他目录。
系统是如何查找do_lostpasswd.htm呢?
大家记得在后台有一个模板选择的下拉表吗?系统会在你选择的模板风格文件夹下查找do_lostpasswd.htm,如果找不到则在去default目录下查找。

注意: 为了提供效率,模板并不是每次都编译的,严格的来说,UCHOME会先判断对应的模板是否被解析过了【查找data/tpl_cache/目录下是否有对应的模板缓存】
如果没有的话才会去按上面的规则去查找。

基本上,按照以上思路就可以根据链接找到匹配的程序文件和模板文件了
下节我们将会介绍几个制作模板中实用的诀窍及模板的解析原理。如如何修改程序让UCHOME每次都重新解析模板,而不生成缓存!

转载于:https://www.cnblogs.com/xiaochaohuashengmi/archive/2010/05/25/1743316.html

授人以鱼不如授人以渔,UCHome全面大解析培训【第二集】相关推荐

  1. 授人以鱼不如授人以渔,UCHome全面大解析培训活动【第三集】

    本节开始介绍UCH模板机制 首先告诉大家一个小技巧,就是如何让系统每次自动更新缓存,免去每次修改模板后都要到后台更新缓存操作,记住,在解决完所有问题后,要在改回来,否则会大幅度提高服务器负担. 打开s ...

  2. 授人以鱼不如授人以渔——CPU漏洞的Symantec解决之道

    授人以鱼不如授人以渔 --CPU漏洞的Symantec解决之道 前言 1月4日,国外安全研究机构公布了两组CPU漏洞,由于漏洞严重而且影响范围广泛,引起了全球的关注,成为2018开年以来第一个信息安全 ...

  3. 授人以鱼不如授人以渔——和女儿学一起学成语

    女儿二年级了,前段时间背了<小学生必背古诗词75首>,采用几天一篇,然后滚动复习这种方式.磕磕绊绊也把一本古诗背了一遍,效果吗?是有的,但是不怎么明显,前面背,后面忘.当然这是规律,难免的 ...

  4. 2018大数据培训学习路线图(详细完整版)

    2018大数据培训学习路线全课程目录+学习线路详解(详细完整版) 第一阶段:大数据基础Java语言基础阶段 1.1:Java开发介绍 1.1.1 Java的发展历史 1.1.2 Java的应用领域 1 ...

  5. 大数据培训ClickHouse表引擎

    表引擎 表引擎(即表的类型)决定了: 1)数据的存储方式和位置,写到哪里以及从哪里读取数据 2)支持哪些查询以及如何支持. 3)并发数据访问. 4)索引的使用(如果存在). 5)是否可以执行多线程请求 ...

  6. 大数据培训技术logstsh filter

    logstsh filter Filter是logstsh功能强大的原因,它可以对数据进行丰富的处理,比如解析数据.删除字段.类型转换等 date:日期解析 grok:正则匹配解析 dissect:分 ...

  7. 大数据培训Spark 高频面试考点分享

    1.Spark 如何保证宕机迅速恢复? 适当增加 spark standby master 编写 shell 脚本,定期检测 master 状态,出现宕机后对 master 进行重启操作 2. Spa ...

  8. 大数据培训机构,主要都学习哪些课程?

    1.大数据处理技术-基于Hadoop/Yarn的实战(含Spark.Storm和Docker应用介绍) 本课程从大数据技术以及Hadoop/Yarn实战的角度,结合理论和实践,全方位地介绍Hadoop ...

  9. 大数据培训哪家好?大数据都学什么?

    大数据都学什么?大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...

最新文章

  1. 世界级安全技术专家力作——《Linux防火墙》
  2. MYSQL和ORACLE时区设置比较
  3. Seq2Seq之双向解码机制 | 附开源实现
  4. Java彻底 - WEB容器的侦听具体解释 ServletContextListener
  5. [Unity菜鸟] Character控制移动
  6. Java onvif协议,Java onvif协议通用协议获取rtsp地址
  7. 【excel问题】关于组织策略阻止超链,解决方法
  8. javascript中关于日期和时间的基础知识
  9. 如何用Appium连接并操作手机App
  10. Maven第7篇:聚合、继承、单继承问题详解
  11. 使用pyecharts绘制各个3D图表代码示例整理和分享
  12. verilog验证平台技巧(避免竞争的办法)
  13. 奇瑞鲍思语:时尚引领科技,奇瑞抓住新能源小车趋势
  14. sql数据库本地服务器不显示,sql数据库本地服务器不显示
  15. 转:什么是超融合?超融合有什么作用,超融合的概念.
  16. 香颂花园是申市最有名的别墅区
  17. PPO近端策略优化算法概述
  18. 图片批量压缩变小的办法
  19. 大恒工业相机多实例使用
  20. oracle 单向同步 方案,使用Goldengate 实现Oracle for Oracle 单向数据同步

热门文章

  1. 黑马程序员_Java高新技术--代理
  2. 自定义 Javascript 模板规则,打造轻量级模板引擎
  3. 【C#学习笔记】单精度和双精度浮点型操作留意。
  4. Dataset XML 序列化,什么是序列化
  5. java菱形乱码 编码_【分享】Java开发过程中中文乱码问题总结
  6. (76)译码器与编码器(三八译码器)
  7. (138)FPGA面试题-Verilog HDL中function和task的区别(二)
  8. stm32f103c8t6 AD DMA连续采集8个通道
  9. LWIP源代码文件目录解析
  10. 谷歌浏览器 转方向_转专业 | 希望你们能在岔路口选对自己的路