博客主页 📖
Typecho文章/分类cid排序
Typecho文章/分类cid排序

Author:

超级小兔

©

Wordage:

共计 2805 字

needs:

约 2 分钟

Popular:

171 ℃

Created:

:本文最后更新于2023年11月06日,已经过了221天没有更新,若内容或图片失效,请留言反馈
目 录

前言

Typecho的文章编号(cid-下文已cid说明)是不联系的,虽然没什么影响,但是对于喜欢完美一些的人(强迫症)来说,真的是忍不了一点...
下面直接上解决办法,包括分类的mid
注:请在php7.0+版本执行,本操作设计数据库,请提前做好备份工作,避免造成损失!

文章cid

需要注意的是:文章cid重新排列后,上传的附件所属文章可能不正确,需手动修改。如果文章内容使用的是外链,则无影响,无需修改。
将下面代码保存为php上传到网站的根目录,然后访问该文件即可
例如www.baidu.com/cid.php,在地址栏访问即可,cid.php是你保存php文件的名称

    <?php
/**
* Typecho重新排列分文章cid让他连续
*/

// 设置数据库参数
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";

// 连接到数据库
$blog = mysqli_connect($hostname_blog, $username_blog, $password_blog, $database_blog) or die(mysqli_connect_error());

// 设置计数器的初始值
$no = 1;

// 定义一个函数来更新文章cid
function change_id($cid)
{
    global $no, $blog;

    // 更新文章cid,并更新与类别、标签、自定义字段和评论的关系
    mysqli_query($blog, "UPDATE typecho_contents SET cid = $no WHERE cid = $cid");
    mysqli_query($blog, "UPDATE typecho_relationships SET cid = $no WHERE cid = $cid");
    mysqli_query($blog, "UPDATE typecho_comments SET cid = $no WHERE cid = $cid");

    $no = $no + 1;
}

// 从数据库中选择所有文章cid,按其 cid 排序
$query_postRecord = "SELECT cid FROM typecho_contents ORDER BY cid ASC";
$result = mysqli_query($blog, $query_postRecord);

// 循环浏览文章并更新其 cid
while ($row = mysqli_fetch_assoc($result)) {
    change_id($row['cid']);
}

// 重置文章 cid 的自动递增值
mysqli_query($blog, "ALTER TABLE typecho_contents AUTO_INCREMENT = $no");

echo 'ok';

?>

分类mid

使用方法同上

    <?php
/**
* Typecho重新排列分类和标签(meta)不连续的mid
*/

// 数据库参数
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";
$blog = new mysqli($hostname_blog, $username_blog, $password_blog, $database_blog);

// 检查错误
if ($blog->connect_error) {
    trigger_error($blog->connect_error, E_USER_ERROR);
}

// 定义全局变量以跟踪“no”值
$no = 1;

// 定义一个函数来更新 mid 及其关系
function change_id($mid)
{
    global $no;
    global $blog;

    // 更新mid
    $sql = "UPDATE typecho_metas SET mid = ? WHERE mid = ?";
    $stmt = $blog->prepare($sql);
    $stmt->bind_param("ii", $no, $mid);
    $stmt->execute();

    // 更新关系
    $sql = "UPDATE typecho_relationships SET mid = ? WHERE mid = ?";
    $stmt = $blog->prepare($sql);
    $stmt->bind_param("ii", $no, $mid);
    $stmt->execute();

    // 递增“no”值
    $no++;
}

// 从数据库中获取所有mid
$query_postRecord = "SELECT mid FROM typecho_metas ORDER BY mid ASC";
$all_postRecord = $blog->query($query_postRecord);

// 循环遍历结果并调用 change_id() 函数
while ($row_postRecord = $all_postRecord->fetch_assoc()) {
    change_id($row_postRecord['mid']);
}

// 重置typecho_metas表的自动增量值
$blog->query("ALTER TABLE typecho_metas AUTO_INCREMENT = $no");

echo 'ok';
?>

结束

到这里就结束了,这只是一篇总结,也是给自己看的,记录一下,免得以后忘了...
补充:之前使用hexo,文章已经全部迁移过来了

作者:
超级小兔
文章:
小兔Blog
地址:
https://blog.xl0408.top/archives/33/
更新:
2023 年 11 月 06 日 19 时
声明:
本文由博主原创,依据 CC BY-NC-SA 4.0 许可协议授权,转载请注明出处
文章二维码
Typecho文章/分类cid排序
共计 0 条评论,点此发表评论
博客主页 小兔Blog 这里是小兔的Blog
萌ICP备20248989号 豫ICP备19042862号 本站已运行 230 天 15 小时 43 分 自豪地使用 Typecho 建站,并搭配 MyDiary 主题 Copyright © 2023 ~ 2024. 小兔Blog All rights reserved.
打赏图
打赏博主
欢迎
欢迎
欢迎访问小兔Blog
欢迎访问小兔Blog
搜 索
足 迹
分 类
  • 😶 乱七八糟
  • 🤔 菜菜菜鸡
  • 💰 失败交易
  • 💊 文棋书画