今天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; ?>