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

06月14日 · 昆明

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. Snapic Paper大概什么时候能重制完成呢?期待中

    1. @Anton

      已经完成大部分,月底可以上线演示,由于要提交著作权登记,所以需要延后两个月发布,估计在国庆前后吧。

  3. 产业太大了也有烦恼,哈哈哈~

    1. @三棵树人

      是呢,维护起来太麻烦。

  4. 那就不升级吧!只要不是什么重大更新

    1. @网友小宋

      不好约束用户不升级。

  5. 这是重构代码了吗

    1. @老何

      应该出于安全性考虑吧。

18 视频:万里赴疆踩线路
1620338400
视频:万里赴疆踩线路
寻找宫崎骏笔下的小镇情境
1343556000
寻找宫崎骏笔下的小镇情境
约伴徒步虎跳峡
1477648800
约伴徒步虎跳峡
24 征途一夏:在扎尕那,看见洛克
1497002400
征途一夏:在扎尕那,看见洛克
有声:重庆吆喝
1538820000
有声:重庆吆喝
39,霜降
1603414800
39,霜降
41,惊蛰
1678075200
41,惊蛰
Snapic Plus v5Lopwon Hub