云水论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3598|回复: 0
打印 上一主题 下一主题

[转帖]【教程】第一讲:很好的理解UCH模板中的变量,从而制作简单插件(if篇)。第二讲:UCH模板及插件中的变量和标签使用(if else篇+模板嵌套)

[复制链接]

1788

主题

62

好友

8525

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2011-2-11 20:12:31 |只看该作者 |倒序浏览
从今天开始,kongkang尽量利用有限的时间给大家出一系列的教程,从而让菜鸟升级成为肉鸟,呵呵,尽量不求人才是正道。
转载请注明(作者:kongkang 来源:discuz论坛 或者 www.daxuesheng.com大学生网)
教程建议及讨论:http://www.daxuesheng.com/space-mtag-tagid-789.html

uch作为sns网站的首选程序,其简单易用的特点为我们熟知,不过,要个性化你的网站还是要在模板和插件上下一番辛苦。
今天我们讨论的就是模板中的一些变量控制。

首先我们要了解模板中的一些标签是做什么的
今天先讲if (也就是<!--{if XXX}-->YYY<!--{/if}-->)
这个应该是最基本同时也是最重要的一个标签,他会被模板程序转化为if(XXX){YYY}的php格式。具体php如果不懂的话,也没必要了解这么详细,简单地说就是:如果(if)条件(XXX)成立,就运行(YYY)的内容,或者说显示{YYY}的内容。
简单的例子:
如果我们要控制模板的一部分只有登陆之后才可以看到,不登陆的话就不可见,那么我们在模板里面就这样写:
  1. <!--{if $_SGLOBAL['supe_uid']}-->
  2. 如果登录了才会显示你看到的这段文字
  3. <!--{/if}-->
复制代码
这里要解释一下$_SGLOBAL['supe_uid']这个全局变量,这个变量就表示现在登陆的uid。
如果没有登录,这个变量的值就会是0,那么if的条件判断就会不成立。
登陆之后,任何一个uid都是正整数,所以一定成立,那么if里面的部分就只能被登陆的用户看到了。

当然,我们可以拓展一下这个内容
如果if判断的是一个数字或者一个变量怎么样呢?
那么我们就找到这个变量,假如$member_num这个变量表示现在的用户数,那么我们就可以这样写,从而达到如果用户数大于多少的时候,就显示不同的内容:
  1. <!--{if $member_num>10000}-->
  2. 哇,用户都大于一万人了,你可以称王称帝了!
  3. <!--{/if}-->
复制代码
其实就是这么简单。

那么我们就能通过这个代码来控制什么内容可以让什么情况的用户看到,或者什么情况下这里面的内容才可见。

暂时就这么多,多加练习,自己创造咯~~~
第二讲:http://www.discuz.net/thread-958195-1-1.html

预告:
要讲的东西很多,模板到变量,从变量导函数,从函数到类库,从类库到插件,从插件到框架,慢慢来。


========================================================

转载请注明(作者:kongkang 来源:discuz论坛 或者 www.daxuesheng.com大学生网)
教程建议及讨论:http://www.daxuesheng.com/space-mtag-tagid-789.html

上次课程的回顾:
第一讲(http://www.discuz.net/thread-957572-1-1.html)我们说了两点,简单的介绍了如何使用if和$_SGLOBAL['supe_uid']全局变量来控制是否登陆状态,这节课,我们继续上次的话题,让他更完善。

第一次课程结束后,有朋友问我,如果要让登陆的看到一种内容,让没有登录的看到一种内容,例如左侧列表,登陆前就是登陆框,登陆后就是列表内容了,还有朋友说:听说有else这一说,让我也讲一讲,那么这节课我们详细的讲讲这个,当然还会有其他的新内容。
  1. <!--{if $_SGLOBAL['supe_uid']}-->
  2. 如果登录了才会显示你看到的这段文字
  3. <!--{else}-->
  4. 没有登陆的话,就只能看到这段文字了,不过登陆后就看不到了,只能看到上面那句,呵呵
  5. <!--{/if}-->
复制代码
其实只要有这个例子,我们就可以实现刚才讨论的没登录用户看到一种,登录用户看到一种内容了。

那么,我们就要问,除了控制这个,举一反三,还有什么内容呢?
例如,我们来看看header这个文件
  1.                 <div id="header">
  2.                         <h2><a href="index.php"><img src="$_SCONFIG[sitelogo]" alt="$_SCONFIG[sitename]" /></a></h2>
  3.                         <!--{if $_SGLOBAL[supe_uid]}-->
  4.                         <ul id="menu">
  5.                                 <li><a href="space.php?do=home">首页</a><!--{if $space[self] && $space[credit]<10}--><a href="space.php?do=home&view=guide" class="edit">向导</a><!--{/if}--></li>
  6.                                 <li><a href="space.php">个人主页</a></li>
  7.                                 <li><a href="space.php?do=friend">好友</a><a href="javascript:;" class="drop">&nbsp;</a></li>
  8.                                 <li><a href="network.php">随便看看</a><!--{if empty($_SCONFIG['showall'])}--><a href="space.php?do=home&view=all" class="edit">近况</a><!--{/if}--></li>
  9.                                 <li><a href="space.php?do=pm"><span id="span_newpm">私信</span><!--{if !empty($_SGLOBAL['member']['newpm'])}--><script>newpm();</script><!--{/if}--></a><a href="javascript:;" class="drop">&nbsp;</a></li>
  10.                         </ul>
  11.                         <div id="op">
  12.                                 <a href="cp.php">设置</a><span class="pipe">|</span>
  13.                                 <a href="cp.php?ac=privacy">策略</a><span class="pipe">|</span>
  14.                                 <!--{if $space[self] && $space[credit]>=10}--><a href="space.php?do=home&view=guide">向导</a><span class="pipe">|</span><!--{/if}-->
  15.                                 <a href="cp.php?ac=common&op=logout">退出</a>
  16.                         </div>
  17.                         <!--{else}-->
  18.                         <div id="op">
  19.                                 <a href="index.php">首页</a><span class="pipe">|</span>
  20.                                 <a href="space.php">我的空间</a><span class="pipe">|</span>
  21.                                 <a href="help.php">帮助</a>
  22.                         </div>
  23.                         <!--{/if}-->
  24.                 </div>
复制代码
这段看起来比较痛苦,为什么呢?因为你没有仔细看,其实很简单。
我这里要强调的是几个问题:
1、<!--{if XXX}-->YYY<!--{else}-->ZZZ<!--{/if}-->表达的意思是:如果XXX条件是真实的, 那么我们就要运行或者显示YYY的内容,否则(也就是XXX不成立的话)就显示或者执行ZZZ的内容。
2、<!--{if XXX}-->YYY<!--{else}-->ZZZ<!--{/if}-->和<!--{if XXX}-->YYY<!--{/if}-->其实是一样的,后者是前者的简单功能版本。
3、if语句是可以嵌套的,这也是上面这段代码例子主要表达的,一个if语句中可以继续写if语句,不过必须成对使用,封闭最里面的if才可以继续写外面 的if语句。类似一个盒子里面要再放一个盒子,必须一个包括一个,不可能A盒子里面有B盒子,同时B盒子里面还有A盒子的部分,这样是会出乱子的

再有,这节课结尾部分我想说一下另外一点,就是模板嵌套的问题。
一个模板可以嵌套另外一个模板:
你会发现,所有的页面的顶部和尾部都一样,这是为什么呢?
因为任何一个文件(大部分)的顶部和尾部都有一句类似这样的代码:<!--{template XXX}-->
其中XXX可能是header或者footer,这就表示,这个地方就是调用了header.htm的模板或者是footer.htm的模板。
那么,我们就可以重用代码了,这个在我后面插件课程中也会说道代码重用的问题,一个程序员基本的素质哦。
别让自己太累了,如果有一大段代码可以重复使用,为什么不让他们独立出来呢?
这样做有两个好处:
1、代码重用,调用代码只有一行,所以调用的话会让你的代码很整齐,非常便于维护;
2、重复使用的代码,可以一次性更新,因为都在调用这个,所以这部分需要修改,只需要修改一次,其它调用的时候自然会用更新过的文件调用,如果重复代码没 有很好的重用,你修改的话就会很多地方同时修改,重复劳动不说,ctrl+c ctrl+v 也是很累,而且容易出错的。


好了,今天的课成就暂时结束了,又是临晨了……
不过如果睡得太早你就不是一个大众程序员,哈哈,因为一半以上的程序员都喜欢晚上写代码,至少我有这个坏毛病。
晚安各位未来的成功者,希望你们成长,记得继续支持我,支持大学生网哦~
  你的沉默明亮如灯、简单如指环。

  论坛其他名字 【云水.墨】 【淡墨瀑雪】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|云水网 ( 鲁ICP备09069806号 )

GMT+8, 2025-6-18 02:46 , Processed in 0.047972 second(s), 18 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部