阅读视图

预料中的又倒下一批 Typecho 主题、模板、插件

fix.jpg


前两天,网友「央」提醒 Typecho 发布了 1.3.0 rc 版,我下意识地深吸口气。果然,昨天对在售的主题/模板/插件,传入新版 Typecho 中运行,各种报错。

一种情况是,自己在制作时,有些功能使用了偏方获取数据,出现兼容问题,如:


    foreach ($result as $value) { // 遍历文章数据 $result
        $value = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($value); // 坊间偏方获取数据
        $permalink = $value['permalink']; // 文章链接
    }

    // 在查询文章表时,坊间流传以上方式获取文章链接,但在 Typecho 1.3.0 rc 版,报错且失效
    // 解决方法,使用内置方法 widgetById 获取文章对象,通过匹配文章 cid 获取对应文章链接

    foreach ($result as $value) { // 遍历文章数据 $result
        $lopwon = Helper::widgetById('Contents', $value['cid']); // 内置方法 widgetById 获取文章对象,详见 var/Utils/Helper.php 文件
        $permalink = $lopwon->permalink; // 文章链接
    }

另一种情况,实属无奈,发现 1.3.0 rc 对附件 attachment 描述 text 的数据存储,由原来的 PHP 序列化字符串,调整为现在的 JSON 字符串,这就让之前通过反序列化获取数据的方式,全都失效了。为了让两种数据类型都能兼顾,且在新旧版本的 Typecho 下都能正常运行,只好判断获取:


    foreach ($result as $value) { // 遍历文章数据 $result
        $textData = $value['text']; // 该值之前为 PHP 序列化字符串,现在为 JSON 字符串
        $valueText = null;

        // 先尝试解析 JSON (Typecho 1.3.0 rc)
        $jsonData = json_decode($textData, true);

        if (json_last_error() === JSON_ERROR_NONE) {
            $valueText = $jsonData;
        }

        // 如果不是 JSON 再尝试反序列化 (Typecho 1.2.1)
        else {
            $unserializedData = @unserialize($textData);

            if ($unserializedData !== false) {
                $valueText = $unserializedData;
            }
        }

        // 如果解析失败,则跳过
        if ($valueText === null) {
            continue;
        }

        // 其他
    }

这两天,已对 Snapic Nojs / Snapic CMS / Snapic Just 640px 主题,以及 Snapic Page / Lopwon Link Ultra 单页模板,还有 Lopwon Hub 插件,做了 Typecho 1.3.0 rc 版的适配。

P.S. 计划年内重制 Snapic Paper(在办)Snapic Plus(待办) 主题。


后记

除了附件描述的数据存储方式做了改变外,发现 1.3.0 rc 对主题配置的数据存储也做了同样的调整。

另外,当主题配置函数 themeConfig() 表单 Text Textarea 等,第三个参数(即表单默认值)非 null 时,而在配置主题设置时,清空表单保存设置后,版本 1.3.0 rc 会使用该表单默认值填充表单,但是,数据库存储该表单的数据却是 null 值,只有再次点击保存设置后,数据库才会更新该表单的数据为具体的值,显然,这样的处理方式会带来困扰。换言之,表单中的值,与数据库中的值,在以上首次提交保存设置的情况下,不是同步的。当然,也有临时的解决方法:

1. 获取主题配置的数据,参照以上介绍的获取附件描述的方法;

2. 判断表单值是否为 null 值,如果是,则使用 value 给表单赋值为空。

    $form->addInput($var->value($valueText['name'] ?? '')); // $valueText 为主题配置数据 name 为表单名称

  •  

给 Typecho 博客添加申请友链、站点收藏等功能

lopwon-link-ultra-post.jpg


把之前制作的模板 Lopwon LinkLopwon Link Pro 整合成 Lopwon Link Ultra 独立页模板,也加入了 Lopwon Links 插件的一些功能,主要用于展示友情链接,管理站点网址,也可以浏览 RSS 聚合订阅内容,等等。

购买过模板 Lopwon Link 或 Lopwon Link Pro 的用户,可以免费升级使用 Lopwon Link Ultra 模板(演示)。


P.S. 受到不少社交平台评论区的「作者赞过」启发,最近,还折腾出了一款类似功能的 Lopwon Hub:Praised 插件。

  •  

43,芒种

43_Mangzhong.jpg

朋友说我这几年拍的东西少了烟火气。确实,在法律法规不断完善下,街头拍照已然自带风险,不仅涉及个人的肖像权,也会让人质疑拍摄动机,冷不丁还会收到律师函,吓得我赶紧把镜头转向了花草树木蓝天白云。

今日芒种:戴耳机,看视频(流畅 / 卡顿

Music by Carlos Carty
  •  

给 Typecho 博客添加旅行足迹地图标记功能

lopwon-roaming-solo.jpg


其实,早几年制作的 Lopwon Footprint 插件已经实现如题功能,也一直作为博客的「我的足迹」展示。直到一周前,地图上毫无预警的出现鳞次栉比、赤焰灼目、颠覆认知的巨大水印。果然,使用第三方提供的免费 API 服务,特么的不靠谱。

估计是稍早前,在重制 Lopwon IPLoc「IP 转属地」插件,对并发数进行优化测试的时候,频繁触到了 API 的 QPS 上限。么么!原本就少得可怜的配额全都归零。这明摆着是要人付款买流量包呐。

幸好之前在制作 Lopwon Echarts「数据可视化」插件的过程中,无意瞥见 [#Echarts] 支持渲染 GeoJson 地图数据,刚好前段时间用这款开源图表库制作过 Lopwon LitCities「点亮城市」插件,练过手。

于是乎,折腾不到 Lopwon Footprint 五分之一的制作时间,完成了 Lopwon Roming Solo 插件,优雅替换。

插件 Lopwon Roming Solo 使用本地库和数据,无需依赖第三方 API 服务,交互友好,界面清爽……

全页地图(见这),坐标定位(演示),文内地图(如下):


  •  

给 Typecho 博客添加评论者「都说了啥」功能

lopwon-user.jpg


前些年制作的 Lopwon Author 插件,其实已经实现过类似的功能,甚至更为全面些。只是,当时是为了熟悉 Typecho 的运作机制,才去捣鼓,在数据处理上难免拉胯。

花了两天,使用相对理想的方法,在当前博客折腾了相似的功能,可以一目了然的呈现评论者在博客里的评论状况,省了去数据库检索的麻烦。

与 Lopwon Author 插件不同,此方法通过新增路由,在前端按需查询匹配评论者的数据。输出诸如:该评论者的所有评论列表,以及对应的评论固定链接;该评论者的总评论数量;该评论者首评至今的时长,等等。


功能演示

博客内任意一篇文章页,点击评论者头像,可见。


如何实现

电邮 lopwon@qq.com 付费改造。

  •  

43,春分

43_Chunfen.jpg

几周前,早已把冬日的衣裤洗晒叠起收好,这两天,昆明竟然下起了雪。

今日可是春分呀:戴耳机,看视频(流畅 / 卡顿

Music by Jordan Critz
  •  

Typecho 记事阅读主题:Snapic Just 640px

Snapic-Just-640px.jpg

在挺长的一段时间里,我从事的是与视觉传达相关的工作,把个人思想通过兴趣点延伸开,争得不容易遇到的同温层群体的认同与共鸣。虽说不是主业,与前端设计也无关,但于我认为,将所累积的经验运用至具有相似特征的博客主题的页面制作中,也是相通的。这样的风格,或者说是性格的映射,同样也体现在我拍摄的照片中,以及听歌喜好里,甚至是生活中。这样的风格,也未必会得到周遭人们的欣赏,毕竟与大众的审美观没有交集。

可能,这即是 lifestyle 吧,是时间积淀的养成,是附体于身的印记,更是一辈子的事情,也因此让我难以理解:为何要把博客整成信息密度堪比门户网站的样子。

博客所记录的文字,所展示的图片,不应该是能让自己得以勉励,给观者在浏览时,提供停留和思索的时间与空间,从而受到启发,产生互动嘛?

我曾在几天里打开了不下百来位建博时间有十来年的博客,这些博客,大部分依旧可以访问,大部分仍在持续更新,大部分关于工作生活,最重要的是,这些博客,大部分主题简洁清爽。这些博主们,几乎是从博客时代走过来的,促使他们仍在写博客的动力,不是因为博客那一键可更换的免费付费的胡里花哨的 Themes,而是他们能在日常中,感受到点滴,并写入博客。他们,不折腾博客主题。

前些年制作的 Snapic Paper 主题,也是自己 lifestyle 的体现,在现在看来,它似乎还不够纯粹,于是,萌发了捣鼓主题 Snapic Just 640px 的念头。

这可能是已知的首款使用无感翻页翻篇的 Typecho 主题,这个功能的灵感,最初源自几年前在制作 Snapic Visual 模板时的全屏画廊滚动翻页,当时在想:能否把类似的功能应用在 Typecho 的归档翻页和文章翻篇上呢?嗯,由于思路没搞通,就没再去践行,也就搁下了。

所谓无感翻页翻篇,指的是:不使用传统点击的方式进行翻页和翻篇,而是在电脑端通过鼠标滚轮,在滚动条触顶触底时,实现跳转至翻页翻篇的页面,而在移动端,则是通过手势滑动,同时,应该具有阻尼效果,避免过于灵敏误触执行。当然,考虑到兼容性,也会保留点击翻页翻篇的功能,只不过将其隐藏,使用按需唤出显示。

在制作 Snapic Just 640px 时,除了延续 Snapic Paper 「没有多余页面元素,能够看到干净文本,专注于安静浏览博客日志」的理念,还做了版式上的提炼,尽量不至于视觉难受,如:对容器间距,对内容行距、段距,对文本字号、字重、字色的和谐相融处理。

主题 Snapic Just 640pxmax-width: 640px; 为内容区宽度,只有三部分(2 个页面 + 1 个滑窗),暂时不使用任何库依赖,摒弃了个人觉得不痛不痒、可有可无的功能,也置入了一些极少或甚至从未被实现过的功能,如:获取当前文章在博客所有文章中的序号,以提示当前的浏览状态。

Snapic Just 640px 会是一款开源免费的主题,你可以自由使用、修改、移植、分发,但禁止商用,包括衍生品,也希望你能保留主题作者 Lopwon 的信息,以及在你的项目中提及 Lopwon

P.S. 已发布

  •