Last updated on 2023/12/18
typecho附件列表代码
在使用Typecho过程中,发现好多主题都不能在文章页显示文章的附件,到网上也没有找到官方针对这个需求开发的API,只有几位大佬给出的非常贴近这个需求的代码,但是均不完全符合需求,而且还有的直接检索了数据库,有点太暴力了。有兴趣的可以打开下面的链接看一下。
typecho文章图片附件缩略图实现代码_博客吧 (boke8.net)
代码
既然网上的代码均不符合需求,那就只好我自己动手了。下面是代码,添加到主题文件夹下的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']
中的pathinfo
为path
即可输出真实的附件地址。
另外,如果你不需要显示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); ?>