今天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 342PHP 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; ?>
本文著作权归作者 [ 老罗 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
我用lilog聚合时候,也遇到过PHP8报错的情况,是某个函数在7.x时候需要用到,到8.x时候已经默认支持了,但是再写就变成多余,反而报错了。
不用改那就最好了。