rizhi主题错误提示的修改

今天rizhi主题作者发来了更新包,适配了ty1.3.0,使用php7.4正常,使用php8.0出现错误的提示如下:
1、猜你喜欢部分

Warning: Undefined array key "permalink" in/www/wwwroot/www.luosir.cn/usr/themes/rizhi/functions.php on line 342

PHP 8.0 对未定义数组下标检查更严格,permalink 这个链接字段不存在,没获取到,PHP8 就报错,PHP7只会忽略,不会报错。
把出现错误提示的那行代码换成下面的,暂时就解决了

function getRandomPosts($random){
    // 修复$random参数类型检查问题
    if (!is_object($random)) {
        $random = Typecho_Widget::widget('Widget_Archive@index');
    }
    $db = Typecho_Db::get();
    $adapterName = $db->getAdapterName();//兼容非MySQL数据库
    if($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite'){
        $order_by = 'RANDOM()';
    }else{
        $order_by = 'RAND()';
    }
    $sql = $db->select()->from('table.contents')
        ->where('status = ?','publish')
        ->where('table.contents.created <= ?', time())
        ->where('type = ?', 'post')
        ->limit(6)
        ->order($order_by);

$result = $db->fetchAll($sql);
if($result){
    foreach($result as $val){
        // 初始化文章对象
        $obj = Typecho_Widget::widget('Widget_Abstract_Contents');
        $obj->push($val);
        
        // 正确获取标题和链接(Typecho 标准用法)
        $post_title = htmlspecialchars($obj->title);
        $permalink = htmlspecialchars($obj->permalink);
        
        echo '<li><a title="'.$post_title.'" href="'.$permalink.'">'.$post_title.'</a></li>';
    }
  }
}

2、暗黑模式下暗黑切换按钮失效
header.php里修改语法错误,如下

<?php if ($this->options->dark): ?>
<link rel="alternate stylesheet" type="text/css" href="<?php $this->options->themeUrl('/css/dark.min.css'); ?>" 
      class="dark-mode" title="dark"
      <?php if(empty($_COOKIE['night'])): ?>disabled="disabled"<?php endif; ?>>
<?php endif; ?>

最后更新:2026-04-06 19:21

发表评论

已有 31 条评论

    1. 我数据库还停留在5.7,昨晚升级了1.3目前还算正常,直接切换8.4提示不让…

      1. @Mr.Chou

        前段时间作者发布了新的版本,你可以试试。

    2. 其实最早我改过一版rizhi主题,不过因为没有购买授权[emoji:106],就没有使用,后来索性用买了的Pigeon魔改使用了!

      1. @时光小镇

        日志主题还有一款免费版本

      2. @时光小镇

        你魔改的相当高级👍

    3. php 7和8的区别还是蛮大的,很多语言的大版本差异,的确是有些难绷。

      1. @obaby

        是啊,好在有强大的ai

    4. 我发现“返回置顶”按钮,点击后,鼠标往下浏览会自动回到顶部,这次更新后还是这样的问题,我索性把这功能去了。

      1. @大峰

        你的网站打不开了

    5. 这主题我觉得挺不错的,我也买了,但是一直没用

      1. @闲余

        我也是压箱底的,更新了才拿出来看看

    6. 这个主题好看的

    7. 又是新的主题了吗?

      1. @小林先森

        几年前的一个主题了,昨天收到作者的更新包,就来试试。

    8. 不错啊,你也用rizhi主题了,这个主题还是不错的

      1. @满心

        是啊,今天刚收到新版本,但还是出现一些php的小问题。我们也来添加个友链吧?

    9. 我也收到了更新,作者没有认真修改兼容性,有点糊弄人的意思。

      1. @老何

        你有无试试php8.0以上开启暗黑模式,切换暗黑的按钮不起作用了?

    10. 打开首页,右上角弹出错误消息。/www/wwwroot/www.luosir.cn/usr/themes/rizhi/header.php on line 20
      alternate stylesheet" href="https://www.luosir.cn/usr/themes/rizhi/css/dark.min.css" title="dark">

        1. @老罗

          好呀,已添加友链了! 超过5层就没办法回复了

          1. @我是军爸

            但是点击猜你喜欢的文章,是不会跳转的,应该有bug

            1. @我是军爸

              这个主题使用起来不容易啊。我们加个友链吧

    11. 我用lilog聚合时候,也遇到过PHP8报错的情况,是某个函数在7.x时候需要用到,到8.x时候已经默认支持了,但是再写就变成多余,反而报错了。

      1. @Vind

        不用改那就最好了。