一言api相信大家都不陌生,但是怎么能在typecho中调用呢,今天就来给大家示范一下。
缘起于博客顶部,会显示博客的副标题,如果没有就是空的,那何不显示一下诗句呢?说干就干。
添加控制选项到 Typecho 后台:
首先,添加一个选项到 Typecho 的设置页面,让用户选择是否开启顶部一言诗词。
在主题的 functions.php 文件中,添加以下代码来注册一个新的设置选项:
function themeConfig($form) {
$hitokoto = new Typecho_Widget_Helper_Form_Element_Radio('hitokoto',
array('0' => '关闭', '1' => '开启'), '0', _t('顶部一言诗词'), _t('选择是否在博客顶部显示一言诗词'));
$form->addInput($hitokoto);
}
获取一言诗词数据:
然后,使用 cURL 获取 API 数据并解析其中的 hitokoto 字段。在 functions.php 文件中,添加以下函数来获取 API 数据:
function getHitokoto() {
$api_url = "https://v1.hitokoto.cn/?c=i";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
return isset($data['hitokoto']) ? $data['hitokoto'] : '';
}
在前端显示诗词:
最后,检查用户是否开启了一言诗词选项,如果开启,则在博客顶部显示获取的诗词。在 header.php 文件(或其他适当的位置)中,添加以下代码:
<?php if ($this->options->hitokoto == '1'): ?>
<div id="hitokoto" style="text-align: center; margin-top: 10px;">
<?php echo getHitokoto(); ?>
</div>
<?php endif; ?>
通过以上步骤,你可以实现一个在 Typecho 后台控制是否在博客顶部显示一言诗词的功能。如果用户选择开启,那么会使用 https://v1.hitokoto.cn/?c=i API 获取数据并在前端显示诗词。
每次打开你的网站,都会先显示“欢迎来自xxx.com的朋友”,这个是怎么实现的呢
@阿猪 e>
// 开屏欢迎js var a = document.createElement("a"); a.href = document.referrer; var so = a.hostname; var name = a.hostname.split(".")[1]; switch (name) { case 'bing': so = '必应搜索'; break; case 'baidu': so = '百度搜索'; break; case 'so': so = '360搜索'; break; case 'google': so = '谷歌搜索'; break; case 'sm': so = '神马搜索'; break; case 'sogou': so = '搜狗搜索'; break; case 'blogscn': so = '比墨迹'; break; case 'xiangming': so = '湘铭`Blog'; break; default: so = a.hostname; } var msg = '欢迎来自'+ so + '朋友!'; var welcomeDiv = document.getElementById("welcome-message"); if (welcomeDiv) { welcomeDiv.innerText = msg; }
你这个评论不是自带的嘛!部署那个-。-
@演员 ?没有呀!
实在不行,你整个二创吧,把这个主题后台设置丰富一下。
@网友小宋 这个没不太行,哈哈哈。
我在想我的博客打开那么慢会不会也因为是一言滴问题呢☹️
@永恒末匕 哈哈哈,F12 看看呢
来看看。之前那个主题的一言,用了好久呢。
@目的地-Destination 新主题也好看呀
刷新几次都没出来 不滑下来看留言 我还以为是我的网络问题呢 原来是……
@刘郎 哈哈哈,看来得把结果放到最上面!
会影响一点访问速度,所以关了!😂 方法留下
@湘铭呀! 刷新了好几遍,我还以为出 bug 了呢。
你关的够快啊
@obaby 哈哈哈哈