Typecho 文档:使用 widgetById 调用多篇指定文章
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3920/
许可方式:CC BY-NC-SA
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
Typecho 有个 widgetById 内置的方法(详见 var/Utils/Helper.php 文件),用于根据指定的表名(如 contents
、comments
、metas
、users
)和主键 ID 获取对应的 Widget 对象。本文档通过使用 widgetById 获取指定多篇文章数据来实现诸如专题类文章列表的功能(演示),当然,也可由此扩展获取评论、分类、标签、用户等数据。
使用方法
A 涉及文件
usr/themes/***/post.php
B 改造文件
作用:在文章页调用指定文章
1. 打开文件 usr/themes/***/post.php 添加以下代码(留意注释,以及按需修改):
$ids = $this->fields->fieldName; // 使用自定义字段 fieldName (自行更改)获取指定多篇文章,格式如 cid,cid,cid
if ($ids !== null && strlen($ids) > 0) { // 如果 fieldName 存在且有值,避免使用 isset 判断时在某些环境下不生效
$idArr = explode(',', $ids);
foreach ($idArr as $id) {
$lopwon = Helper::widgetById('Contents', $id); // 根据 ID 获取单个 Widget 对象
if (!empty($lopwon->cid)) {
echo '<a href="' . $lopwon->permalink . '">' . $lopwon->title . '</a><br>';
} else {
echo '无 cid=' . $id . ' 文章数据<br>';
}
}
}
至此,通过新增自定义字段并指定文章 cid 即可在该篇文章页调用这些文章信息。