uchome模板

所有内容均以uchome1.5版为准

一. 原 系统模板页面简介

uchome 1.5的系统模板页面主要在/templates/default目录下,命名大致分为以下几类:

  1. 以cp_开头的文件(主要是用户进行数据‘操作’的模板)
  2. 以do_开头的文件 (注册、登陆等)
  3. 以network_开头的文件(主要‘显示随便看看里 面使用)
  4. 以space_开头的文件(主要用于‘显示’用户各类信息的模板)
  5. 单 独文件(header、footer等)
  6. 样式表/templates/default/style.css

****很多页面调用的模板可以从url地 址中猜测出来

比如左侧“日志”的链接为:http//home.xxx.com/space.php?do=blog, 那么把spaceblog连 接起来为space_blog,然后再看该页面显示了什么,在这里这个页面显示了 日志的列表,而/template/default/下面有个文件正好是space_blog_list.htm, 呵呵……

然后我们分别点击这个页面顶上的功能导航 好友最新日志 我的日志 我踩过的日志 大家的日志 发现页面右边会显示不同的内容,有时是“按作者查看”,有时是“日志分类”,我们打开space_blog_list.htm,找 到

</DIV一行,发现从这里开始有两个IF判断,这就表示这两个不同的显示都整合到这一个模板页面里啦。。。>

同样也可以从模板文件的名称来猜测前台页面的url,比如看到一个模板文件network_blog.htm,不晓得干什么的,那么我们就拆分它, 在url里输入http://home.xxx.com/network.php?ac=blog 就可以访问了

一般url里面的参数有 do cp ac 等等几个 后面连接的是功能名,如blog日志,mtag群组,thread群组话题,album相册 等等。

二. 二次开发的插件使用的模版页面

二 次开发的插件模板页面一般位于插件文件夹下的view/文件夹下,比如结伴同行插件目录为/partner,那么模板文件在/partner/view 下,样式表位于/partner/css下

三. 图片文件夹

一些公 用的图片(如应用的icon等)放在/image/目录下,大部分与界面有关的图片位于/templates/default/image目录下

四. 系统模板页面功能详细说明

*** 注:说明里面一般是表示通过这几步操作可以看到该页面

cp_advance.htm : 说明: 个人设置-》高级管理

cp_album.htm : 说明: 相册-》我的相册-》管理相册主界面,包括编辑相册、编辑图片、删除相册、删除图片

cp_avatar.htm : 说明: 个人设置-》我的头像

cp_blog.htm : 说明: 日志-》我的日志-》发表新日志、编辑日志等操作

cp_class.htm : 说明: 日志分类操作,日志-我的日志-右侧日志分类的编辑和删除

cp_comment.htm : 说明: 评论的操作,包括编辑、删除、以及对别人评论的回复

cp_common.htm : 说明: 举报、屏蔽通知等操作

cp_credit.htm : 说明: 个人设置-》积分

cp_doing.htm : 说明: 心情记录-》回复或者删除

cp_domain.htm : 说明: 设置个人二级域名-现在不用管

cp_feed.htm : 说明: 删除某个动态以及,消息-》通知 某个通知后面图标表示的“屏蔽”

cp_friend.htm : 说明: 对好友的所有操作 ,如列表、查找、批准等等

cp_header.htm : 说明: 个人设置页面的头部 ,如我的头像、个人资料、主页风格等

cp_import.htm : 说明: 日志-》发表日志-》导入

cp_invite.htm : 说明: 页面最顶部-》“邀请”

cp_mtag.htm : 说明: 群组的操作页面,包括新建、删除、修改等

cp_password.htm : 说明: 设置-》账号设置

cp_pm.htm : 说明: 最顶部-》消息 包括发 删

cp_poke.htm : 说明: 打招呼 包括向别人打招呼 管理别人的招呼

cp_privacy.htm : 说明: 顶部-》隐私 (个人隐私设置)

cp_profile.htm : 说明: 设置-》个人资料

cp_sendmail.htm : 说明: 邮件相关

cp_share.htm : 说明: 处理“分享”操作 例如在博客列表标题后点击分享弹出的界面

cp_space.htm : 说明: 好像与“应用”有关

cp_task.htm : 说明: 参与活动 例如进入首页的 “更新个人头像”,等等。。

cp_theme.htm : 说明: 设置-》主页风格

cp_thread.htm : 说明: 群组中 “话题”的相关操作页面

cp_upload.htm : 说明: 左侧 “相册”的上传链接

cp_userapp.htm : 说明: 管理用户app应用 ,暂时不管

do_ajax.htm : 说明: 一些ajax操作的结果界面

do_inputpwd.htm : 说明: 密码验证

do_login.htm : 说明: 登陆 退出后 点击最顶部的“登录”

do_lostpasswd.htm : 说明: 忘记密码

do_register.htm : 说明: 退出后 点击最顶部的“注册”

do_swfupload.htm : 说明: 相册上传的 “批量操作”

footer.htm : 说明: 页脚

header.htm : 说明:页头

help.htm : 说明: 帮助页面 help.php可以看到

iframe.htm : 说明: 不清楚 待研究

index.htm : 说明: 首页—未登录状态的欢迎页面,聚合了blog、相册等

invite.htm : 说明: 点击别人发过来的邀请链接后出现的界面

network_album.htm : 说明: 随便看看-相册

network_blog.htm : 说明: 随便看看-博客

network_doing.htm : 说明: 随便看看-记录

network_header.htm : 说明: 随便看看-顶部那几个链接

network_index.htm : 说明: 随便看看-全部

network_mtag.htm : 说明: 随便看看-群组

network_share.htm : 说明: 随便看看-分享

network_space.htm : 说明: 随便看看-成员

network_thread.htm : 说明: 随便看看-话题

sendmail.htm : 说明: 系统邮件的模板

showmessage.htm : 说明: 信息提示

space_album_list.htm : 说明: 相册列表

space_album_pic.htm : 说明: 查看某个照片的页面

space_album_view.htm : 说明: 点击相册,列出该相册的照片(注:区分album和pic)

space_blog_list.htm : 说明: 博客列表

space_blog_view.htm : 说明: 查看某博客内容

space_comment_li.htm : 说明: 显示评论列表某条(这个在很多有评论功能的页面都引用了,用循环这个“小小”模板的方式列出所有评论)

space_doing.htm : 说明: 心情记录

space_feed.htm : 说明: 个人动态页面

space_feed_li.htm : 说明: 个人动态列表(被包含在space_feed.htm里,用循环方式引用)

space_friend.htm : 说明: 点击顶部“好友”

space_guide.htm : 说明: 用户刚开通空间时候的向导页面,提示上传头像等

space_index.htm : 说明: 点击顶部“个人主页”

space_list.htm : 说明: 用户列表(被network_space.htm包含)

space_menu.htm : 说明: 个人空间顶部的链接菜单

space_mood.htm : 说明: 个人主页-同心情的朋友

space_mtag.htm : 说明: 群组-我的群组

space_mtag_field.htm : 说明: 群组-热门群组(有群组分类)

space_mtag_index.htm : 说明:群组-进入某个群组

space_mtag_list.htm : 说明: 群组-进入某个群组-讨论区

space_mtag_member.htm : 说明: 群组-进入某个群组-成员列表

space_notice.htm : 说明:顶部-通知

space_pm.htm : 说明:顶部-通知-消息

space_post_li.htm : 说明: 被space_thread_view.htm文件引用(被循环调用显示帖子)

space_privacy.htm : 说明: 隐私相关,正在研究

space_rss.htm : 说明: 订阅的,不用管

space_share_li.htm : 说明: 分享-查看某条项目(被下面的space_share_list列表页循环引用)

space_share_list.htm : 说明: 分享-列表

space_share_view.htm : 说明: 查看某条分享的内容,在分享列表点评论的时候会出现

space_tag_list.htm : 说明: 打开某篇日志——标题下如果有标签——点击标签——标签列表

space_tag_view.htm : 说明: 查看某个标签

space_thread_list.htm : 说明: 群组话题列表 点左侧的群组默认页面

space_thread_view.htm : 说明: 查看某个主题

space_wall.htm : 说明: 留言板,包括给自己留言给别人留言

style.css : 说明: 样式表

userapp.htm : 说明:用户添加应用或管理应用操作,不用管

五. 插件模板文件说明

以 结伴同行为例/partner/view

partner.htm : 说明: 首页以及信息列表页

partner_header.htm : 说明: 头部文件,一般包括此插件的几个功能导航

partner_post.htm : 说明: 发布新信息

partner_view.htm : 说明: 浏览某条信息的内容

 

以几个例子来详细说明下uchome的 模板文件结构及语法说明。

必须先来了解一下uchome的模板文件解析过程,我们以“随便看看”里的“博客”为例:

它的url地址是http://home.xxx.com/network.php?ac=blog,

那么我们先打开/network.php看一下,我们看到第25行有一段

//允许的方法
$acs = array(’space’, ‘doing’, ‘blog’, ‘album’, ‘mtag’, ‘thread’, ’share’);
$ac = (empty($_GET['ac']) || !in_array($_GET['ac'], $acs))?’index’:$_GET['ac'];

这里是保证不会出现其他不存在的模块。看到里面有个’blog’了吧。

然后又看到第37行里面有一段

//数据处理
include_once(S_ROOT.”./source/network_{$ac}.php”);

这个实际上引用了/source/network_blog.php文件,而network_blog.php里面进行相关的博客数据准备及其他操 作,为下一步的解析模板做准备

 

最后第49行有

//模板调用

include_once template(”network_$ac”);

即用template函数解析对应的静态htm模板页面再进行调用,template函数就不详细说了,主要是定位到模板文件夹下的指定模板页面 (例如这里就是/template/default/network_blog.htm),然后用正则表达式替换模板文件中的变量和模板语法语句,填充上 一步得到的博客数据,然后输出到屏幕

之所以使用模板页面,而不直接在php里面写htm代码输出,是为了使程序代码和模板页面分离,便于设计师和程序员的工作互不影响。

好了废话了很多,先看一下uchome的基本模板语法

就以/template/default/network_blog.htm为例,它的内容是(绿色的和褐色底色的就是嵌入到模板页面里面的语法代 码了)

<!–{eval $_TPL['titles'] = array(’日志’, ‘随便看看’);}–>
<!–{template header}–>
<!–{template network_header}–>

<div id=“search” class=“h_status”>

<div id=“m_search”<!–{if !empty($gets) || !empty($_GET['view'])}–> style=”display:none;”<!–{/if}–>>
<form method=“get” action=“network.php”>
<input type=“text” name=“key” value=“$_GET[key]“ size=“26″ class=“t_input” />
<input type=“hidden” name=“ac” value=“$ac” />
<input type=“hidden” name=“searchmode” value=“1″ />
<input type=“submit” name=“searchsubmit” value=“搜索日志” class=“submit” />
<a href=“java script:;”οnclick=“document.getElementById(’m_search’).style.display=’none’; document.getElementById(’adv_search’).style.display=’block’”>高级搜索< /a>
</form>
</div>
<form method=“get” action=“network.php”>
<table cellspacing=“0″ cellpadding=“0″ class=“formtable” id=“adv_search”<!–{if empty($gets) &&empty($_GET['view'])}–> style=”display:none;”<!–{/if}–>>
<tr>
<th width=“60″>关键字*</th>
<td>
<input type=“text” name=“key” value=“$_GET[key]“ size=“26″ class=“t_input” />
</td>
</tr>
<tr>
<th>作者名*</th>
<td>
<input type=“text” name=“username” value=“$_GET[username]“ size=“26″ class=“t_input” />
</td>
</tr>
<tr>
<th>时间范围</th>
<td>
<input type=“text” name=“starttime” value=“$_GET[starttime]“ size=“10″ class=“t_input” /> ~ <inputtype=“text” name=“endtime” value=“$_GET[endtime]“ size=“10″ class=“t_input” />
格式为 YYYY-MM-DD
</td>
</tr>
<tr>
<th>搜索方式</th>
<td>
<label for=“subject”><input id=“subject” type=“radio” value=“subject”name=“type”$typearr[subject]>搜索标题</label>
<label for=“fulltext”><input id=“fulltext” type=“radio” value=“fulltext” name=“type”$typearr[fulltext]>全文搜索</label>
</td>
</tr>
<tr>
<th>结果排序</th>
<td>
<select name=“orderby”>
<option value=“dateline”>发布时间</option>
<option value=“replynum”$orderbyarr[replynum]>回复数量</option>
<option value=“viewnum”$orderbyarr[viewnum]>浏览次数</option>
</select>
<select name=“ascdesc”>
<option value=“asc”>按升序排列</option>
<option value=“desc”$ascdescarr[desc]>按降序排列</option>
</select>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
<input type=“hidden” name=“ac” value=“$ac” />
<input type=“hidden” name=“searchmode” value=“1″ />
<input type=“submit” name=“searchsubmit” value=“搜索” class=“submit” />
</td>
</tr>
</table>
</form>
</div>

<!–{if $list}–>
<div class=“entry_list”>
<ul>
<!–{loop $list $value}–>
<li>
<div class=“avatar48″><a href=“space.php?uid=$value[uid]“><img src=“<!–{avatar($value[uid],small)}–>” class=“avatar” /></a></div>
<div class=“title”>
<div class=“r_option”><a href=“cp.php?ac=share&type=blog&id=$value[blogid]“id=“a_share_$value[blogid]“ οnclick=“ajaxmenu(event, this.id, 99999,” , -1)” class=“a_share”>分享</a></div>
<h4><a href=“space.php?uid=$value[uid]&do=blog&id=$value[blogid]“>$value[subject]</a></h4>
<div><a href=“space.php?uid=$value[uid]“>{$_SN[$value[uid]]}</a> <span class=“time”><!–{date(’Y-m-d H:i’,$value[dateline],1)}–></span></div>
</div>
<div class=“detail image_right l_text s_clear” id=“blog_article_$value[blogid]“>
<!–{if $value[pic]}–><p class=“image”><a href=“space.php?uid=$value[uid]&do=blog&id=$value[blogid]“><img src=“$value[pic]“ /> $value[message]
</div>
<div>
<!–{if $value[viewnum]}–><a href=“space.php?uid=$value[uid]&do=blog&id=$value[blogid]“>$value[viewnum] 次阅读</a><spanclass=“pipe”>|</span><!–{/if}–>
<!–{if $value[replynum]}–><a href=“space.php?uid=$value[uid]&do=blog&id=$value[blogid]#comment”>$value[replynum] 个评论</a><!–{else}–>没有评论<!–{/if}–>
</div>
</li>
<!–{/loop}–>
</ul>
</div>
<div class=“page”>
<!–{if $multi==’networkpage’}–>仅显示最新发布的 $count 个日志<!–{else}–>$multi<!–{/if}–>
</div>
<!–{else}–>
<div class=“c_form”>没有相应的日志。</div>
<!–{/if}–>

<!–{template footer}–>

一般来说,我们需要了解一下几个与html标记不同的东西:

1><!–{xxxxx}–> 在html里面,这个表示将一段代码注释掉,不显示出来,而 在uchome模板里,它在里面放入了一对花括号,就表示是嵌入了php语句啦,可以被还原成正规的php代码。

2>在模板里面,是可以直接显示php的变量的,模板解析函数会将这些变量替换成实际的变量值。

1.变量设置与其他模板调用

第一句 设置变量的值

<!–{eval $_TPL['titles'] = array(’日志’, ‘随便看看’);}–>

表 示将$_TPL['titles']变量设置为array(’日志’, ‘随便看看’);

第二句 调用另外一个模板文件进来[模板里面再调用模板]

<!–{template header}–>实际上相当于php中的

template(”header”) 即解析/template/default/header.htm文件

条件判断 <!–{if xxx}–><!–{/if}–>类

首先是<!–{if $multi==’networkpage’}–>如果满足条件,这里显示一些东西<!–{/if}–>

以及<!–{if $multi==’networkpage’}–>如果满足条件,这里显示一些东西<!–{else}–>否则显示其他的东西& lt;!–{/if}–>

循环显示 <!–{loop}–><!–{/loop}–>类

<!–{loop $list $value}–>

显示了一遍又一遍啊又一遍 $value[name] : $value[job] <br />

<!–{/loop}–>

如上所示,这个就是将数组$list里面的元素一个接一个的显示出来。假如我们这里的$list存储了两位设计师的资料

$list = array(0=>array(’name’ => ‘baobao’,’job’=>’超级设计师’),1=>array(’name’ => ‘小马’,’job’=>’无敌设计师’));

那么这里最后得到的html代码是

显示了一遍又一遍啊又一遍 baobao :超级设计师 <br />

显示了一遍又一遍啊又一遍 小马 :无敌设计师 <br />

….

语法嵌套

当然了,语法可以嵌套,所以这也造成我们看模板文件的复杂性,比如在loop里面会有if,即表示每循环一次都要进行判断;又或者if里面有 loop,即表示只有满足条件了,才会进行循环

2.变量显示

直接显示

在php里面,变量名是以$美元号为开头的,所以如果在模板里面看见很多$_GET、$_POST、$list、$value[aaa]的 这样的东西,就表示显示变量的值。不过我们如果要直接输出变量值,一般习惯在变量名的前后加上花括号,避免模板解析错误,比如{$_GET[aa]}、{$_POST[bb]}、{$list}、{$value[aaa]}等 等。

变量与标准html混写

<a href=”cp.php?ac=friend&op=add&uid={$value[uid]}” id=”a_hot_friend_{$key}” οnclick=”ajaxmenu(event, this.id, 99999, ”, -1)”>

如上面所示,其中既有html又有$value[uid]这样的变量(还记得吗?用花括号包起来防止变量解析错误),它们是混合在一起的,没有关 系,我们在脑海里把变量用一个数字或者字母来替换来想象,然后理解就容易了,类似上面那段,其实解析出来后显示的是

<a href=”cp.php?ac=friend&op=add&uid=12345” id=”a_hot_friend_2342” οnclick=”ajaxmenu(event, this.id, 99999, ”, -1)”>

OK,就这么简单,这样设计师只要了解几个简单的语法,就知道显示效果是什么样了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值