开屏动画

typecho 使用一言api

技术 15 评 796 度
机器人
AI摘要
Gemini

通过在 Typecho 后台添加控制选项,你可以选择是否在博客顶部显示一言诗词。开启此选项后,系统会调用 https://v1.hitokoto.cn/?c=i API 获取诗词数据,并在前端展示。实现此功能需要添加设置选项、获取 API 数据和在前端显示诗词的代码。

2024-07-04T06:12:04.webp

一言api相信大家都不陌生,但是怎么能在typecho中调用呢,今天就来给大家示范一下。
缘起于博客顶部,会显示博客的副标题,如果没有就是空的,那何不显示一下诗句呢?说干就干。

2024-07-04T02:07:08.webp

添加控制选项到 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 获取数据并在前端显示诗词。

辞职了,第一天不上班。
广告图片
AD
15 评论
    阿猪 Chrome 126 Windows 10 山西省太原市
    7月7日回复

    每次打开你的网站,都会先显示“欢迎来自xxx.com的朋友”,这个是怎么实现的呢

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月7日回复

      @阿猪 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; }

    演员 Chrome 122 Windows 10 贵州省贵阳市
    7月6日回复

    你这个评论不是自带的嘛!部署那个-。-

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月7日回复

      @演员 ?没有呀!

    网友小宋 Chrome 125 Windows 10 河南省漯河市
    7月5日回复

    实在不行,你整个二创吧,把这个主题后台设置丰富一下。

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月7日回复

      @网友小宋 这个没不太行,哈哈哈。

    永恒末匕 Safari 17 iPhone 广西贵港市
    7月5日回复

    我在想我的博客打开那么慢会不会也因为是一言滴问题呢☹️

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月7日回复

      @永恒末匕 哈哈哈,F12 看看呢

    目的地-Destination Firefox Browser 127 OSX 江苏省无锡市
    7月4日回复

    来看看。之前那个主题的一言,用了好久呢。

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月7日回复

      @目的地-Destination 新主题也好看呀

    刘郎 QQ Browser 12 Windows 10 贵州省黔南州
    7月4日回复

    刷新几次都没出来 不滑下来看留言 我还以为是我的网络问题呢 原来是……

      湘铭呀! Chrome 126 Windows 10 福建省宁德市
      7月4日回复

      @刘郎 哈哈哈,看来得把结果放到最上面!

    湘铭呀! Chrome 126 Windows 10 福建省宁德市
    7月4日回复

    会影响一点访问速度,所以关了!😂 方法留下

      obaby Chrome 118 OSX 山东省济南市
      7月4日回复

      @湘铭呀! 刷新了好几遍,我还以为出 bug 了呢。
      你关的够快啊

        湘铭呀! Chrome 126 Windows 10 福建省宁德市
        7月4日回复

        @obaby 哈哈哈哈

  • 小星星变奏曲 - 莫扎特
  • Moon River - Audrey Hepburn