Press "Enter" to skip to content

为Typecho主题添加附件列表

Last updated on 2023/12/18

typecho附件列表代码

在使用Typecho过程中,发现好多主题都不能在文章页显示文章的附件,到网上也没有找到官方针对这个需求开发的API,只有几位大佬给出的非常贴近这个需求的代码,但是均不完全符合需求,而且还有的直接检索了数据库,有点太暴力了。有兴趣的可以打开下面的链接看一下。

typecho文章图片附件缩略图实现代码_博客吧 (boke8.net)

Typecho输出文章附件内所有图片的函数-爱好者 (archive.org)

typecho调取文章附件作为缩略图-雨中看海 (kindevil.com)

代码

既然网上的代码均不符合需求,那就只好我自己动手了。下面是代码,添加到主题文件夹下的post.php文件中(不保证在其它文件中可用)。

<?php $attachments = $this->attachments()->stack; ?>
<?php if (!empty($attachments)): ?>
<h4>附件列表:</h4>
<?php foreach($attachments as $attachment): ?>
<span style="padding-right:2em;">
<a href="<?php echo $attachment['pathinfo']; ?>" title="<?php _e('浏览 %s', $attachment['title']); ?>" target="_blank"><?php echo $attachment['title']; ?></a>
</span>
<?php endforeach; ?>
<?php endif; ?>
如果上面的代码不能正常显示就看这里吧

下面为预览图:

注意,以上代码输出的并不是文件的真实地址,而是Typecho的附件页面,就是/attachment/{cid}/这个页面。其实还有很多用法,可以在第一行代码下面加入一行<?php print_r($attachments); ?>查看更多可供选择的参数,譬如修改$attachment['pathinfo']中的pathinfopath即可输出真实的附件地址。

另外,如果你不需要显示Typecho的附件页面,只想获取真实地址的话,第一行代码可以改为<?php $attachments = $this->attachments()->attachment; ?>,当然这时候这行代码后面的代码就不能直接使用了,建议加入<?php print_r($attachments); ?>来查看所有可选参数。

开发

建议使用下面的代码来查看所有可用参数后进行开发,注意,先在typecho后台上传一个附件到对应的文章后再使用,不然返回值会为空。

<?php $attachments = $this->attachments()->attachment;print_r($attachments); ?>
<?php $attachments = $this->attachments()->stack;print_r($attachments); ?>
如果上面的代码不能正常显示就看这里吧

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注