Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[经验] 【教程】第三讲:针对UCH升级包20080613的案例讲解(if案例实战篇)【更新说明】

[复制链接]
kongkang 发表于 2008-6-14 11:53:07 | 显示全部楼层 |阅读模式
转载请注明(作者:kongkang 来源:discuz论坛 或者 www.daxuesheng.com大学生网)
教程建议及讨论:http://www.daxuesheng.com/space-mtag-tagid-789.html

上次课程的回顾:
第一讲(https://discuz.dismall.com/thread-957572-1-1.html)和第二讲(https://discuz.dismall.com/thread-958195-1-1.html)我们着重说了最基本的if语句在模板中的使用,这节课我们将针对这次升级包的一个细节延伸出来的案例进行一个简单的实战演练。

我们先看这两段代码:
1、1.2未升级之前的header中一段代码:
  1.                         <!--{if empty($_SGLOBAL['nologinform'])}-->
  2.                         <form id="loginform" name="loginform" action="do.php?ac=login&ref" method="post">
  3.                                 <div style="padding: 10px;">
  4.                                         <p class="gray"><label for="username">用户名:</label></p>
  5.                                         <p><input type="text" name="username" id="username" class="t_input" value="$membername" size="15" style="width: 100px;" /></p>
  6.                                         <p class="gray"><label for="password">密 码:</label></p>
  7.                                         <p><input type="password" name="password" id="password" class="t_input" size="15" style="width: 100px;" /></p>
  8.                                         <p><input type="checkbox" id="cookietime" name="cookietime" value="315360000" checked /> <label for="cookietime">下次自动登录</label></p>
  9.                                         <p style="padding-top: 4px;">
  10.                                                 <input type="hidden" name="refer" value="space.php?do=home" />
  11.                                                 <input type="submit" id="loginsubmit" name="loginsubmit" value="登录" class="submit" style="padding: 0; width: 50px;" />
  12.                                                 <a href="do.php?ac=lostpasswd">找回密码</a>
  13.                                         </p>
  14.                                 </div>
  15.                         </form>
  16.                         <!--{/if}-->
  17.                         <ul class="sidelink">
  18.                                 <li><a href="do.php?ac=register"><strong>注册</strong>期待您的入住</a></li>
  19.                                 <li><a href="help.php"><strong>页面介绍</strong>了解一下您的家</a></li>
  20.                                 <!--{if $_SCONFIG['networkpublic']}--><li><a href="network.php"><strong>随便看看</strong>看看大家在做什么</a></li><!--{/if}-->
  21.                         </ul>
复制代码
2、升级之后的header代码:
  1. <!--{if empty($space['theme']) && empty($space['css'])}-->
  2.                         <!--{if empty($_SGLOBAL['nologinform'])}-->
  3.                         <form id="loginform" name="loginform" action="do.php?ac=login&ref" method="post">
  4.                                 <div style="padding: 10px;">
  5.                                         <p class="gray"><label for="username">用户名:</label></p>
  6.                                         <p><input type="text" name="username" id="username" class="t_input" value="$membername" size="15" style="width: 100px;" /></p>
  7.                                         <p class="gray"><label for="password">密 码:</label></p>
  8.                                         <p><input type="password" name="password" id="password" class="t_input" size="15" style="width: 100px;" /></p>
  9.                                         <p><input type="checkbox" id="cookietime" name="cookietime" value="315360000" checked /> <label for="cookietime">下次自动登录</label></p>
  10.                                         <p style="padding-top: 4px;">
  11.                                                 <input type="hidden" name="refer" value="space.php?do=home" />
  12.                                                 <input type="submit" id="loginsubmit" name="loginsubmit" value="登录" class="submit" style="padding: 0; width: 50px;" />
  13.                                                 <a href="do.php?ac=lostpasswd">找回密码</a>
  14.                                         </p>
  15.                                 </div>
  16.                         </form>
  17.                         <!--{/if}-->
  18.                         <ul class="sidelink">
  19.                                 <li><a href="do.php?ac=register"><strong>注册</strong>期待您的入住</a></li>
  20.                                 <li><a href="help.php"><strong>页面介绍</strong>了解一下您的家</a></li>
  21.                                 <!--{if $_SCONFIG['networkpublic']}--><li><a href="network.php"><strong>随便看看</strong>看看大家在做什么</a></li><!--{/if}-->
  22.                         </ul>
  23. <!--{/if}-->
复制代码
我们很容易发现,这两段代码标志着整个header的升级核心内容:
  1. <!--{if empty($space['theme']) && empty($space['css'])}-->……<!--{/if}-->
复制代码
那么这段代码有什么作用呢?
首先要做几个简要的解释:
$space['theme']这个变量,代表着现在空间所有者的个人风格模板编号,如果使用了非默认模板,这个变量就会赋值,否则就是空(empty)。
$space['css']这个变量,里面存储着你的自定义css代码,如果你选用了自定义的css代码,这里就是你的代码内容。
&&这个表示并且的意思,也就是说,这个符号的前后必须同时成立,整个句子才会是“成立的”或者说真实的,任何一个不成立,那就是返回“不成立的”或者说假的
empty(XXX)这个函数表示,如果XXX的值是空,也可以理解是空白的,那么整个empty(XXX)就会是真实的,如果XXX不是空,则返回假的  


知道了这两点,然后联系起来,我们就可以基本上通过代码的语义来明白:
  1. <!--{if empty($space['theme']) && empty($space['css'])}-->……<!--{/if}-->
复制代码
表示 如果$space['theme']是空的话,而且$space['css']也是空的话,则显示……的内容。
再进一步理解,就是说,如果你选择的是默认模板的话,那么……的部分就会显示。

这样就理解了,为什么升级之后个人空间选择了不同的风格,就会出现没有登录框的"错误"。
为什么“错误”要加引号呢?因为这种错误不是程序造成的,是条件判断的结果和我们预想的不一样,所以如果仅仅调试bug是找不出来这样的错误的。

解决方法很简单,去掉
  1. <!--{if empty($space['theme']) && empty($space['css'])}-->……<!--{/if}-->
复制代码
就好了,直接保留……的内容。

直接贴出来方法就是:
找到
  1. <!--{if empty($space['theme']) && empty($space['css'])}-->
  2.                         <!--{if empty($_SGLOBAL['nologinform'])}-->
  3.                         <form id="loginform" name="loginform" action="do.php?ac=login&ref" method="post">
  4.                                 <div style="padding: 10px;">
  5.                                         <p class="gray"><label for="username">用户名:</label></p>
  6.                                         <p><input type="text" name="username" id="username" class="t_input" value="$membername" size="15" style="width: 100px;" /></p>
  7.                                         <p class="gray"><label for="password">密 码:</label></p>
  8.                                         <p><input type="password" name="password" id="password" class="t_input" size="15" style="width: 100px;" /></p>
  9.                                         <p><input type="checkbox" id="cookietime" name="cookietime" value="315360000" checked /> <label for="cookietime">下次自动登录</label></p>
  10.                                         <p style="padding-top: 4px;">
  11.                                                 <input type="hidden" name="refer" value="space.php?do=home" />
  12.                                                 <input type="submit" id="loginsubmit" name="loginsubmit" value="登录" class="submit" style="padding: 0; width: 50px;" />
  13.                                                 <a href="do.php?ac=lostpasswd">找回密码</a>
  14.                                         </p>
  15.                                 </div>
  16.                         </form>
  17.                         <!--{/if}-->
  18.                         <ul class="sidelink">
  19.                                 <li><a href="do.php?ac=register"><strong>注册</strong>期待您的入住</a></li>
  20.                                 <li><a href="help.php"><strong>页面介绍</strong>了解一下您的家</a></li>
  21.                                 <!--{if $_SCONFIG['networkpublic']}--><li><a href="network.php"><strong>随便看看</strong>看看大家在做什么</a></li><!--{/if}-->
  22.                         </ul>
  23. <!--{/if}-->
复制代码
修改成:
  1.                         <!--{if empty($_SGLOBAL['nologinform'])}-->
  2.                         <form id="loginform" name="loginform" action="do.php?ac=login&ref" method="post">
  3.                                 <div style="padding: 10px;">
  4.                                         <p class="gray"><label for="username">用户名:</label></p>
  5.                                         <p><input type="text" name="username" id="username" class="t_input" value="$membername" size="15" style="width: 100px;" /></p>
  6.                                         <p class="gray"><label for="password">密 码:</label></p>
  7.                                         <p><input type="password" name="password" id="password" class="t_input" size="15" style="width: 100px;" /></p>
  8.                                         <p><input type="checkbox" id="cookietime" name="cookietime" value="315360000" checked /> <label for="cookietime">下次自动登录</label></p>
  9.                                         <p style="padding-top: 4px;">
  10.                                                 <input type="hidden" name="refer" value="space.php?do=home" />
  11.                                                 <input type="submit" id="loginsubmit" name="loginsubmit" value="登录" class="submit" style="padding: 0; width: 50px;" />
  12.                                                 <a href="do.php?ac=lostpasswd">找回密码</a>
  13.                                         </p>
  14.                                 </div>
  15.                         </form>
  16.                         <!--{/if}-->
  17.                         <ul class="sidelink">
  18.                                 <li><a href="do.php?ac=register"><strong>注册</strong>期待您的入住</a></li>
  19.                                 <li><a href="help.php"><strong>页面介绍</strong>了解一下您的家</a></li>
  20.                                 <!--{if $_SCONFIG['networkpublic']}--><li><a href="network.php"><strong>随便看看</strong>看看大家在做什么</a></li><!--{/if}-->
  21.                         </ul>
复制代码
记得,如果你想真正明白的话,还是推荐你仔细看一下这两段代码,你就会豁然开朗,因为两段代码看起来很庞大,其实差别就是去掉了一个if判断。

【更新说明,from:sup】
刚才收到sup的短消息,我们来看看,官方这样更新还是有很用心的地方:
这个去掉后,游客查看模板的时候,会出现错乱的情况。现在的处理方法是:游客浏览个性主页的时候,就不显示左侧栏。避免一些自定义css没有考虑到游客浏览的情况。

所以大家要考虑好利弊哦~

现在,你是不是可以在原有的程序上变着花儿的修改你想要的东西了?
另外扩展一下:
&&表示同时成立的时候返回真实,if来根据最后的结果判断:&&前后只要有一个不成立,if就是不成立,两个都成立,那才是成立。
||这个呢就表示只要有一个成立就会返回真实,if来根据最后这个结果判断:||前后只要有一个成立,if就会成立,两个都不成立,那才是不成立。
好了,大家已经晕了,多多实践。

多多支持kongkang的大学生网www.daxuesheng.com哦~

下一期教程再见~
PS:下周可能要去北京出差,想要请我吃饭的朋友可以排队了,当然,扔板砖的也可以事先去捡几块,(*^__^*) 嘻嘻……

[ 本帖最后由 kongkang 于 2008-6-14 13:14 编辑 ]

评分

2

查看全部评分

ywhwy 发表于 2008-6-14 11:59:00 | 显示全部楼层
楼上,你抢的贼快
回复

使用道具 举报

cfking 发表于 2008-6-14 12:00:07 | 显示全部楼层
地板~
回复

使用道具 举报

nxyyl 发表于 2008-6-14 12:10:11 | 显示全部楼层
我也来抢拉哈哈
回复

使用道具 举报

52discuz2008 发表于 2008-6-14 12:10:29 | 显示全部楼层
小板凳。。。
回复

使用道具 举报

Baolianu 发表于 2008-6-14 12:14:35 | 显示全部楼层
呵呵,我也抢了个首页.
回复

使用道具 举报

dinhuajj 发表于 2008-6-14 12:17:33 | 显示全部楼层
支持老大啊,呵呵,好文章。
官方很不负责,让我们都覆盖,这样问题相当大,至少header.htm是绝对不能覆盖的,错位是修改css的,在置顶帖子已经解决了,加个判断更是画蛇添头发,幸亏老大指出了,搞得我弄了半天才又还原回去。
没有备份我就相信了官方,教训深刻啊。

[ 本帖最后由 dinhuajj 于 2008-6-16 08:58 编辑 ]
回复

使用道具 举报

 楼主| kongkang 发表于 2008-6-14 12:19:43 | 显示全部楼层
更新好了,每天一点点,坚持不懈~
回复

使用道具 举报

usxing 发表于 2008-6-14 12:23:41 | 显示全部楼层
占位占位 study
回复

使用道具 举报

ylsdd 发表于 2008-6-14 12:28:52 | 显示全部楼层
顶顶!支持!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-24 00:46 , Processed in 0.025273 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表