typecho引入最新memos动态

chen'mo
2024-12-29 / 0 评论 / 171 阅读 / 正在检测是否收录...

我的演示:
https://cmsblog.cn/memos.html

代码是GPT写的
新建一个页面,插入以下代码。
CSS需要根据自己的主题来调整。


<?php                
// 分页参数
// 分页参数
$items_per_page = 10; // 每页显示的动态数量
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码,默认为 1

// 获取 RSS 数据
$rss_url = 'https://memos.cmsblog.cn/u/157104945@qq.com/rss.xml'; // 替换为你的 Memos RSS 网址
$rss_content = file_get_contents($rss_url);
if ($rss_content === FALSE) {
    echo '无法获取 Memos 数据';
} else {
    // 解析 RSS 数据
    $xml = simplexml_load_string($rss_content);
    if ($xml === FALSE) {
        echo '解析 RSS 数据失败';
    } else {
        // 获取动态条目总数
        $total_items = count($xml->channel->item);
        // 计算总页数
        $total_pages = ceil($total_items / $items_per_page);

        // 检查页码是否有效
        if ($page < 1) $page = 1;
        if ($page > $total_pages) $page = $total_pages;

        // 计算当前页的起始索引和结束索引
        $start_index = ($page - 1) * $items_per_page;
        $end_index = $start_index + $items_per_page;

        // 遍历 RSS feed,显示当前页的动态
        $count = 0;
        foreach ($xml->channel->item as $item) {
            if ($count >= $start_index && $count < $end_index) {
                $title = (string)$item->title;
                $link = (string)$item->link;
                $description = (string)$item->description;
                $pubDate = (string)$item->pubDate;

                // 转换时间(假设 RSS feed 中的时间是服务器时间,或者根据需要调整时区)
                // 这里假设 RSS feed 中的时间已经是正确的时区时间,所以直接格式化输出
                // 如果需要转换时区,请使用 DateTime 类或 strtotime + date 函数进行转换
                $pubDateFormatted = date('Y-m-d H:i:s', strtotime($pubDate)); // 格式化时间字符串

                // 截取描述内容并添加链接
                $excerpt = mb_substr($description, 0, 300);
                if (mb_strlen($description) > 300) {
                    $excerpt .= '... <a href="' . $link . '" target="_blank">阅读更多</a>';
                } else {
                    $excerpt .= ' <a href="' . $link . '" target="_blank">查看原文</a>';
                }

                // 输出动态内容
                echo '<div class="memo-item">';
                echo '<h3><a href="' . $link . '" target="_blank">' . $title . '</a></h3>';
                echo '<p>' . $excerpt . '</p>';
                echo '<p>时间:' . $pubDateFormatted . '</p>'; // 使用格式化后的时间
                echo '</div>';
            }
            $count++;
        }

        // 输出分页导航
        echo '<div class="pagination">';
        if ($page > 1) {
            echo '<a href="?page=' . ($page - 1) . '">上一页</a> ';
        }
        for ($i = 1; $i <= $total_pages; $i++) {
            if ($i == $page) {
                echo '<span>' . $i . '</span> ';
            } else {
                echo '<a href="?page=' . $i . '">' . $i . '</a> ';
            }
        }
        if ($page < $total_pages) {
            echo '<a href="?page=' . ($page + 1) . '">下一页</a>';
        }
        echo '</div>';
    }
}
  ?>  
华为云学堂人工智能开发者认证训练营送500卷
« 上一篇 12-26
Debian离线部署docker教程
下一篇 » 12-30

评论 (0)