API 利用之二,调用某栏目最新主题和自定义数据。
此方法为 API 变异方法,实际使用请开发插件完成该功能。这是一种没技术的暴力解决方法,性能跟开发插件有一定区别,但不至于很大区别,那点区别感受不到。如果不能忍受,做到亿级数据,高并发时,找我砍几刀,放血解决即可。
第一篇写的是 JS 前端 API 获取数据,本篇为 PHP 通过 API 获取,开启 API 后,直接在 htm 模板用PHP完成。
<!--
htm 中的PHP 代码第一行代码请勿换行,保留一个空格,防止被压缩
list-1.html?ajax=1
list 为列表
第一个数字 1 为版块fid
如需翻页为 list-1-2.html?ajax=1
第二个数字 2 为翻页码
ajax=1 为API数据,仅在PHP中这样使用
-->
<?php $json = http_get('http://www.x.com/list-1.html?ajax=1'); /*得到 json 数据*/
$datalist = xn_json_decode($json); /* json 数据转为数组 */
$_forum = $datalist['message']['forum']; /* 版块信息 */
$_threadlist = $datalist['message']['arrlist']['threadlist']; /* 版块调用的主题 */
$_flaglist = $datalist['message']['arrlist']['flaglist']; /* 调用版块自定义主题 */
/*
打印数据查看格式
code = 0 表示成功
code = 0 返回正常数据, message 为返回的数据
code > 0 数据错误,message 为错误提示
code < 0 数据不存在,message 为错误提示
code 返回非数字错误,表单提交的错误参数,message 为错误提示
*/
/*
echo '<pre>';
print_r($_threadlist);
echo '<hr>';
echo '</pre>';
exit;
*/
?>
<div class="shadow mt-3">
<div class="card-header bg-light">
<h3 class="h6 font-weight-bold my-0">
<!-- 调用版块数据,能打印就可以调用 -->
<a href="<?php echo $_forum['url'];?>" title='<?php echo $_forum['name'];?>' aria-label='<?php echo $_forum['name'];?>'>
<?php echo $_forum['name']; ?>
</a>
</h3>
</div>
<ul class="list-group list-group-flush nowrap">
<!-- 循环输出 -->
<?php if($_threadlist){foreach($_threadlist as $_thread) { ?>
<li class="list-group-item bg-white">
<h4 class="h6 my-0">
<a href="<?php echo $_thread['url'];?>" class="d-block ellipsis" <?php echo (10==$_thread['type']?'rel="nofollow" target="_blank"':''); ?>>
<?php echo $_thread['subject'];?>
</a>
</h4>
</li>
<?php }} ?>
</ul>
</div>