老罗博客
  • 首页
  • 钓鱼
  • 友链
  • 友圈
  • 排行
  • 归档
  • 关于
  • 首页
  • 微语
  • 友链
  • 友圈
  • 排行
  • 归档
  • 关于
  • 搜索
  • 夜间模式
    ©2021-2026  老罗博客 Theme by OneBlog
    搜索
    标签
    # 游记 # 网络 # focus
  • 首页>
  • 网络>
  • 正文
  • rizhi主题错误提示的修改

    2026年04月05日 196 阅读 26 评论 1831 字

    今天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; ?>
    本文著作权归作者 [ 老罗 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    读者留言26

    留言排行

    1. Vind Lv.1 上海市静安区
      2026-04-05 20:44 回复

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

      1. 老罗 博主 广东省广州市
        2026-04-05 20:46 回复
        @Vind

        不用改那就最好了。

    1. 1
    2. 2
    加载更多评论
    加载中...
    — 已加载全部评论 —
    首页微语友链友圈排行归档关于
    Copyright©2021-2026  All Rights Reserved.  Load:0.026 s
    粤ICP备2024302751号-1
    本站由又拍云提供CDN加速/云存储服务 Theme by OneBlog V3.6.5  
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。