uchome模板

发布时间:2025-12-09 16:57:47 浏览次数:4

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

一. 原 系统模板页面简介

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

  • 以cp_开头的文件(主要是用户进行数据‘操作’的模板)
  • 以do_开头的文件 (注册、登陆等)
  • 以network_开头的文件(主要‘显示随便看看里 面使用)
  • 以space_开头的文件(主要用于‘显示’用户各类信息的模板)
  • 单 独文件(header、footer等)
  • 样式表/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}–>

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

    <p 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>
    </p>
    <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>
    </p>

    <!–{if $list}–>
    <p class=“entry_list”>
    <ul>
    <!–{loop $list $value}–>
    <li>
    <p class=“avatar48″><a href=“space.php?uid=$value[uid]“><img src=“<!–{avatar($value[uid],small)}–>” class=“avatar” /></a></p>
    <p class=“title”>
    <p 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></p>
    <h4><a href=“space.php?uid=$value[uid]&do=blog&id=$value[blogid]“>$value[subject]</a></h4>
    <p><a href=“space.php?uid=$value[uid]“>{$_SN[$value[uid]]}</a> <span class=“time”><!–{date(’Y-m-d H:i’,$value[dateline],1)}–></span></p>
    </p>
    <p 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]
    </p>
    <p>
    <!–{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}–>
    </p>
    </li>
    <!–{/loop}–>
    </ul>
    </p>
    <p class=“page”>
    <!–{if $multi==’networkpage’}–>仅显示最新发布的 $count 个日志<!–{else}–>$multi<!–{/if}–>
    </p>
    <!–{else}–>
    <p class=“c_form”>没有相应的日志。</p>
    <!–{/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,就这么简单,这样设计师只要了解几个简单的语法,就知道显示效果是什么样了。

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477