将主题适配WP的部分迁移回TE,与一些改动
面对WordPress的社区活跃度与充足的功能与插件,但还是因为性能问题放弃了迁移计划。迁移过程中,也产生了一些新的代码,于是近日将相关代码迁回TE站点,并更新主题版本号为JiCoreV3.1版本。大概更新的内容如下图所示吧。
其中更多的还是关于评论系统的改进。因为整套主题的原生评论辅助用JS已经被我重写了,当时也有很多因素没有考虑到,比如说当JS不可用时,如何才能正确回复夫评论?当从邮件提醒链接点进来时,评论框是否已经就绪?目前这些问题都得到了解决。
首先,回复按钮,被改成了这个样子:
<a class="reply" href="?replyTo=<?php $comments->coid(); ?>#<?php $comments->theId(); ?>" onclick="return createReply('<?php $comments->coid(); ?>','<?php echo addslashes($comments->author); ?>');">回复</a>
自定义评论JS中,createReply
方法永远返回false
以阻止原生跳转事件。当JS不可用时,跳转到手动拼接的地址,以便于正常回复。在这个拼接链接被点进去后(或者是从评论邮件提醒点进来后),判断URL中的形参replyTo
,如果有,(后端层面)就给评论框追加一个浮动(就绪)的CSS,并让取消回复按钮以及其他评论相关的按钮逻辑可以衔接起来,这样就做好了。
此外,在适配WordPress主题的时候,发现WP那边有另外一个比较舒服的点,就是评论表单内,指定夫ID的隐藏input
是永远存在的,不指定或者是指定为0,则不是回复模式,有内容时,就是回复对应的夫评论。
在Typecho试了一下这个操作,我没敢传0过去,直接传了个空串,经过试验,也能达到WordPress那边一致的效果。但与WP不同的是,当URL中已经指定了夫评论,表单URL也会自动锁定相关夫评论,优先级大大高于表单内指定夫ID的隐藏input
。所以当遇到这种情况时,也就是URL中已指定夫评论时,如果要回复其他人,会提示用户需要刷新页面,跳转到没有形参的页面(URL不指定特定夫评论的Case),然后才允许回复其他人。
再就是一些小的CSS改进,比如说翻页按钮的CSS已经重构,还有代码框和图片不再贴边等等。
还有就是评论区的Lazy loading优化,给评论者头像加上loading="lazy"
的属性,会对性能友好一些。但请注意,如果想作用于图片,图片最好是已经固定宽高的,否则因为懒加载而造成大量的页面重排(reflow),反而会影响页面性能。所以不要把这个应用于自适应大小的正文图片里。
上电视了