在你的博客上面添加一个rss输出页面

V zc (UID: 1996) [复制链接]
帖子链接已复制到剪贴板
帖子已经有人评论啦,不支持删除!

908 4

主要是在自己博客上面新建一个页面,输出友链的最新文章

一、在博客根目录下面创建一个php文件,例如outputrss.php,代码如下

<?php

// 需要抓取的RSS链接数组及对应的图片地址
$feeds = [
    ['url' => '友链1的订阅地址', 'image' => '友链1的logo'],
    ['url' => '友链2的订阅地址', 'image' => '友链2的logo']
];
// 存储结果的数组
$results = [];
foreach ($feeds as $feed) {
    // 使用file_get_contents获取RSS/Atom内容
    $xml = file_get_contents($feed['url']);
    // 使用SimpleXML解析RSS/Atom内容
    $rss = simplexml_load_string($xml);
    // 检查是否成功加载RSS/Atom
    if ($rss === false) {
        echo "Error loading feed from " . $feed['url'];
        continue;
    }
    // 获取RSS/Atom源的标题
    $siteTitle = (string)($rss->channel->title ?? $rss->title);
    // 获取第一条item
    $item = $rss->channel->item[0] ?? $rss->entry[0];
    if ($item === null) {
        echo "No items found in feed from " . $feed['url'];
        continue;
    }
    // 格式化发布时间
    $pubDate = date('Y-m-d H:i', strtotime((string)($item->pubDate ?? $item->published)));
    // 将所需的信息存入数组
    $results[] = [
        'siteTitle' => $siteTitle,
        'title' => (string)$item->title,
        'link' => (string)($item->link['href'] ?? $item->link),
        'description' => (string)($item->description ?? $item->summary),
        'pubDate' => $pubDate,
        'image' => $feed['image']
    ];
}
// 设置响应头为JSON
header('Content-Type: application/json');
// 输出JSON数据
echo json_encode($results, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// 保存JSON数据到文件
file_put_contents('outputrss.json', json_encode($results, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
?>

二、编辑上述代码

修改友链的rss订阅地址,有几个就加几个,旁边是对应的logo,当然你也可以不添加logo,这是我自己用的。最后修改倒数第二行的outputrss.json,这个是生成的json文件名,也可以不改。

三、访问这个php文件

你的博客域名/outputrss.php

四、新建页面

在你的博客模板下面新建页面模板,然后根据自己模板,来创建这个页面,以下是我的样式

<style type="text/css">
        .friends {
            display: flex;
            align-items: stretch;
            justify-content: space-between;
            flex-wrap: wrap;
            margin: -6px;
        }
        .friends .friend {
            margin: 6px;
            min-width: 240px;
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 10px;
            border: 1px solid rgba(200, 200, 200, 0.2);
            background-color: rgba(200, 200, 200, 0.1);
            position: relative;
        }
        .friends .friend.friend-empty {
            border: none;
            background: none;
        }
        .friends .friend .friend-avatar {
            flex-shrink: 0;
            margin: 8px;
            width: 60px;
            height: 60px;
            line-height: 60px;
            border-radius: 30px;
            background-color: rgba(200, 200, 200, 0.2);
            background-size: cover;
            background-position: center;
            font-size: 24px;
            text-align: center;
        }
        .friends .friend .friend-detail {
            flex: 1;
            width: 0;
            display: flex;
            flex-direction: column;
            margin: 8px 8px 8px 0;
        }
    </style>
<div class="friends">
    <?php
    // 获取JSON数据
    $jsonData = file_get_contents('./outputrss.json');
    // 将JSON数据解析为PHP数组
    $articles = json_decode($jsonData, true);
    // 对文章按时间排序(最新的排在前面)
    usort($articles, function ($a, $b) {
        return strtotime($b['pubDate']) - strtotime($a['pubDate']);
    });
    // 设置每页显示的文章数量
    $itemsPerPage = 12;
    // 生成文章列表
    foreach (array_slice($articles, 0, $itemsPerPage) as $article) {
        $articles_list ='
        <div class="friend">
            <div class="friend-avatar" style="background-image: url(' . htmlspecialchars($article['image']) . ')"></div>
            <div class="friend-detail">
                <p>标题:' . htmlspecialchars($article['title']) . '</p>
                <p>来源:' . htmlspecialchars($article['siteTitle']) . '</p>
                <p>链接:<a href="' . htmlspecialchars($article['link']) . '" target="_blank">查看原文</a></p>
                <p>时间:' . htmlspecialchars($article['pubDate']) . '</p>
            </div>
        </div>
        ';
        echo $articles_list;
    }
    ?>
  <div class="friend friend-empty"></div>
  <div class="friend friend-empty"></div>
  <div class="friend friend-empty"></div>
        </div>

五、把上述代码的获取json那里,改成你的json文件名即可

最后,展示地址如下:   揽星友圈

声明:代码是通义千问写的,样式是我去年抄来的,实在忘记在哪抄的了,抱歉作者。如果你不需要logo,那就自己问AI改一改就行,该代码同时可以解析rss和atom格式,样式代码仅供参考,根据自己的博客整体样式来就行,可以让AI写样式。

 

该代码是只输出友链的最新一条,并且只展示最新的12个,可以在代码可以改显示数量,也可以按照自己需求,让AI输出更多的

已有评论 ( 4 )
提示:您必须 登录 才能查看此内容。
创建新帖
自助推广点击空位自助购买TG联系
确认删除
确定要删除这篇帖子吗?删除后将无法恢复。
删除成功
帖子已成功删除,页面将自动刷新。
删除失败
删除帖子时发生错误,请稍后再试。