下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国CMS怎样在栏目文章列表中间插入一条新数据到指定位置?

987 2021-02-23 09:49:17

收藏

简述

本文提供三种方案解决需要在列表指定位置插入新文章的问题,新站推荐方案一,老站推荐方案三,方案二基本被淘汰。

有客户的小说站在发布完一篇小说后,发现遗漏了一章。此时如果新增一章必然是排在小说最后面,于情于理不合适。那么,怎样在已经发布的小说章节列表里插入一条新的呢?
 

文前提示

本文提供三个方案,用于解决帝国CMS在栏目文章列表中间插入一条数据的需求。

方案一:如果是新站,收录排名都在初始阶段,则直接从ID入手,操作较为简单

方案二:如果是已收录的文章,且数量庞大时,不建议修改ID,否则必然导致受影响页面收录丢失、排名下降

方案三:在编辑方案二时想到方案三,为最佳解决方案

注意:操作前务必备份数据库
 

方案一:

解决这个需求的问题在于:如何在自增数据表内插入一行数据,而且要让ID继续连续!

有的朋友就会说,直接去数据库改ID。但无论是改一个,还是去替换已有的,都是不现实的。要么导致报错,要么工作量奇大。这个时候,就只能是操作数据库。

以下案例使用帝国CMS新闻NEWS表做范例。(注意备份你的数据库,切记!

首先我们要解决自增列不能改动ID的问题,使用如下数据库命令:(为什么是3条?答:帝国CMS如果要改动一条内容数据就要涉及到3个表。语句每行是一个,请一条条执行!)
ALTER TABLE `phome_ecms_news` CHANGE id id INT(10) UNSIGNED NOT NULL ;
ALTER TABLE `phome_ecms_news_index` CHANGE id id INT(10) UNSIGNED NOT NULL ;
ALTER TABLE `phome_ecms_news_data_1` CHANGE id id INT(10) UNSIGNED NOT NULL ;

然后我们要取消ID主键问题:
alter table phome_ecms_news modify id int(10),drop primary key;
alter table phome_ecms_news_index modify id int(10),drop primary key;
alter table phome_ecms_news_data_1 modify id int(10),drop primary key;

继续,我们查看需要插入的数据之后的ID号:比如说ID:88 后面要插入数据,那么我们就要把ID为88后面所有的ID号都+1,我们才能插入一个ID:89。 (也就让原来的89变成了90, 90变成了91……)

需要用的语句为:
update phome_ecms_news set id=id+1 where id>88;
update phome_ecms_news_index set id=id+1 where id>88;
update phome_ecms_news_data_1 set id=id+1 where id>88;

继续:现在我们发布一个信息,就是需要补的那个信息,当然也可以是已经发布过的。我们找到这个文章的ID并记住这个ID,比如说ID为666。

那么我们要把这个ID变成89了!语句:
update phome_ecms_news set id=89 where id=666;
update phome_ecms_read_zj_index set id=89 where id=666
update phome_ecms_read_zj_data_1 set id=89 where id=666

这样我们就搞定了插入了!下面再把主键和自增改回去!

恢复主键:
alter table phome_ecms_news add primary key(id);
alter table phome_ecms_news_index add primary key(id);
alter table phome_ecms_news_data_1 add primary key(id);

恢复自增:
ALTER TABLE `phome_ecms_news` CHANGE id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `phome_ecms_news_index` CHANGE id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `phome_ecms_news_data_1` CHANGE id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;

而后,刷新栏目即可生效。

本方案来自墨鱼部落格

方案一从实现角度来说,较为简单。但就如本文最前方的提示所言,对seo极不友好。如果是页面已经收录了很多,且站点数据量极大的情况,则不建议执行本方案。
 

方案二

方案二适用于已经有不少收录排名的站点,对SEO无影响,但相对于方案一而言复杂不少,务必寻求专业人员帮助。

实现思路:
1、在原有文章模板的基础上复制出来三个,并将上一章、下一章的名称、链接写死为新插入文章逻辑上的上、下章,前一篇、后一篇的模板同样写死

2、新增一篇文章,无视ID,将内容按常规发布,并指定当前文章的内容模板为上一步新增的模板

本方案操作起来复杂程度高,且不利于未来的维护,请看方案三
 

方案三

方案三的重点在于将本栏目设为按照发布时间排序,由于发布时间并不是唯一值,具有很大的操作空间。操作前,可先核实当前栏目全部文章的发布时间。

不排除一秒内发布了多篇的情况,务必注意备份数据库,尽量寻求专业人士协助。

实现思路:
1、确保全部章节发布时间没有错位,且是从小到大递增(如果有相同时间,则执行SQL命令将全部发布时间设为指定时间戳+ID,最终确保全部发布时间从小到大逐次递增。如果本就是递增的,则无需执行下方SQL命令)
 

update phome_ecms_news set newstime=1614047877+id where classid=该小说栏目ID;
//如此该栏目小说可确保全部发布时间递增,时间戳可改为自己需要的时间
update phome_ecms_news set newstime=newstime+10 where classid=该小说栏目ID and id > 需要插入的位置下一条信息ID;

2、新增的文章发布时间设置到逻辑上的上一章、下一章之间

3、刷新全部文章即可。

方案三最为万无一失,唯一的瑕疵在于届时ID会有点乱入。但任何人看小说都是点链接进入上下章节,未必会有人注意到这个ID的问题。

通过以上方案,基本可以解决任何需要在列表指定位置插入文章的问题,无论新老站点,都有合适的方案。

本文地址:https://xzo.com.cn/develop/empire/639.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
帝国cms后台信息列表标题显示不完怎么办?
帝国cms后台信息列表标题显示不完怎么办?

帝国CMS后台信息列表标题文字字数默认是被控制过的,超出一行会截断,一些相对...

15 761
帝国cms怎样将一二三级置顶改为首页栏目置顶等其他名字?
帝国cms怎样将一二三级置顶改为首页栏目置顶等其他名字?

帝国cms推荐、头条级别要改名都可以在栏目设置(栏目-头条/推荐级别)里进行修...

1 506
帝国CMS新手入门用万能标签还是灵动标签比较快?
帝国CMS新手入门用万能标签还是灵动标签比较快?

帝国CMS有两大标签,其中一个叫万能标签,另一个叫灵动标签,两个标签用法截然不...

1 514
帝国cms网站链接域名出现了2次,访问都是404是什么原因?
帝国cms网站链接域名出现了2次,访问都是404是什么原因?

帝国cms网站链接域名出现了2次是什么原因,要怎么解决?这个问题往往出现在用户...

1 737
帝国cms默认首页index.html被收录了怎样做重定向?
帝国cms默认首页index.html被收录了怎样做重定向?

今天有客户联系鸥哥,说网站默认首页index.html被收录了。这本是好事,奈何网站...

0 543
帝国cms灵动标签开发那年今日发布的文章
帝国cms灵动标签开发那年今日发布的文章

很多国民app有去年今日的功能,就如QQ空间的那年今日。而网站如果调用那年今...

0 485
帝国cms怎样开通在线QQ客服无好友聊天
帝国cms怎样开通在线QQ客服无好友聊天

QQ客服是很多帝国cms网站的在线客服方案,开通QQ客服没有门槛,而且接收信息方...

0 565
帝国cms自定义页面为什么无法调用描述和关键词?
帝国cms自定义页面为什么无法调用描述和关键词?

帝国cms自定义页面常用于制作一些相对简单的页面,但如果注意过页面tdk,会发现...

0 392
推荐插件
帝国cms百度AI图像清晰度增强api接口对接插件
帝国cms百度AI图像清晰度增强api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像清晰度增强的功能。经...

0 524
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 1017
帝国cms纳米数据接口(足球比赛中最新数据)
帝国cms纳米数据接口(足球比赛中最新数据)

帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...

0 423
帝国cms多栏目多数据表自动审核推送插件
帝国cms多栏目多数据表自动审核推送插件

本插件基于帝国cms帝国cms每日自动审核插件,在自动审核指定条数信息的基础上...

0 927
帝国cms联想词搜索高级搜索插件下载
帝国cms联想词搜索高级搜索插件下载

帝国CMS自带的搜索功能虽然强大,但也有很强的局限性 -- 必须关键词完全匹配...

0 736
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...

0 782
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 471
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 460
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入