搞清楚comments.php
时间用在查找代码上去得特别快。感觉问题还没解决,时间就已经溜了。大体上看,就只有几个大问题需要解决,但实际上那些东西是完全没有头绪应该怎么去做的。昨天我花了一个下午的时间去处理comments.php。那个模板用来设定在哪里显示评论,哪里显示评论框,这其中还不包括评论框里的具体格式。看上去这是非常简单的事情,实际上,还是要考虑好几个问题,但显然,10年前,做那个模板的时候,我没有在comments.php这个问题上纠结,我顶多是往里面放了一些我设定好的CSS,所以那个部分的逻辑到底是怎样的,我没去修改,沿用的是某个模板。实际上我用的那个模板是不是标准的,我也说不准,因为我实在不记得当年我用作改造的模板是哪一个。因为通常WordPress的官方模板都非常简单,甚至可以说简单过头,于是你不知道该如何在那个的基础之上改造。大概之前,我的那个comments.php测试的时候,我只是考虑了一般情况。但除了正常情况,WordPress里还是会有一些极端情况,比如说某篇日志被设计为密码可见。无论是日志还是评论,在输入密码之前都应该是一片空白。那个模板就很神奇,日志部分已经是提示输入密码才可见,评论部分直接不显示就行了,但实际上,那里居然在会提示一次输入密码才可见,显然这就是画蛇添足了。让我纠结的时间最长的是嵌套格式的代码。因为正文部分我分为左边和右边,左边是文章的主体以及评论框,右边是边栏。这两个板块,一个是float向左,一个向右,一旦代码嵌套不合理,右边的边栏就会进入左边,又或者直接消失,也有可能是因为缺少结束嵌入代码,所以网页底部的东西飞上去了。要解决这些结构格式上的问题,就首先要搞清楚,那些php代码的开始结束位置。比如说某篇文章设定了不允许评论,但是对于已经有的评论,你还是要把它们显示出来,然后在最后一条的那里显示不许再评论。之前我根本没有测试过不许评论这个功能,显然当我在撰写日志的时候设定了不允许评论以后,之前的模板相应网页会出状况。而之所以这样,是因为默认的模板里面我只在if下面添加了足够多的格式结束标签,在else里面没写。不许评论就是else的部分,判定函数应该是评论是否开放,但实际上,不允许评论这句话从结构看来,应该是放在评论列表的最后。这样的风格才会统一,因为有些时候,不许评论之前可能文章已经有评论了,如果硬生生地把那放在允许评论就有评论框,不允许评论评论框消失并写着不允许评论,那样就太生硬了。
我花了几乎一个下午的时间去处comments.php,最后终于搞清了里面的逻辑关系。为了让那些if跟else,以及endif能更好地维护,我在上面做了很多注解,基本上每个的那里我都会写清楚了对应的是哪个,同时我也进行了缩进。那么以后找的时候就不会那么头痛。如果写代码的人用的是大括号,显然就不需要纠结endif对应谁。我也不知道为什么那个人不用大括号,在没有标注也没有缩进的情况下搞清那些东西真的好费神。
纠结不是毫无用处的,这会让我变得更强大。