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

帝国cms怎样在发布文章后自动生成目录

1585 2021-04-23 17:58:20

收藏

简述

通过JS获取并循环正文中的h2标签,并循环到导航区域实现帝国cms自动导航的功能。
帝国cms怎样在发布文章后自动生成目录
注:
本文提供的方案只有视觉效果,无法被百度抓取,如需百度可抓取,可移步帝国cms自动生成文章新闻目录插件下载

文章如果带有目录,可以让用户在浏览文章时对文章结构一目了然,对于用户体验提升比较大。但帝国cms站点默认是没有文章自动生成目录的功能的,我们可以自己开发。

帝国cms怎样在发布文章后自动生成目录
本文基于js+jQuery实现文章目录自动生成的功能,经实际测试没有问题。如果将来发现代码无法生效,请将demo里的jQuery链接到本地可访问的jQuery再进行复测。

本文转自莫愁blog 原文链接https://www.mochoublog.com/study/255.html,原文博主可能亦是转载,或是转载后进行了升级,目前真实出处无法进行判断。如果本文是您的原创,请联系本站在线客服,我们将在第一时间更新出处。

以下是转载的原文,有少量错误修正。
 

一个好的博客文章除了文章的质量要好以外,文章结构也能让读者阅读的更加舒服与方便,我看有些博客的博文的前面都带有章节的目录索引,点击索引之后会跳转到相应的章节阅读,并且还可以回到目录顶端,这种结构如果是在写博文的时候人工设置那是非常麻烦的,无疑是增加了工作量。如果能自动生成章节索引岂不是节省了一大堆工作量。下面我就分享下实现方法。
 

方案一:支持一级目录

实现原理:通过<h3>标签实现自动目录

HTML代码:
<!DOCTYPE >   
<head>   
<title>目录索引生成代码</title>   
<script type="text/javascript" src="https://www.mochoublog.com/skin/more/js/jquery.min.js"></script>  
</head>   
<body>   
<div id='newstext'>  
<h2>章节1</h2>  
<p>这里是章节1的内容</p>  
<h2>章节2</h2>  
<p>这里是章节2的内容</p>  
<h2>章节3</h2>  
<p>这里是章节3的内容</p>  
<h2>章节4</h2>  
<p>小小代码,不值一提,如果您觉得对您还有一点用,就点个赞支持一下吧。</p>  
</div>  
</body>   
</html>  

JavaScript代码:
<script language="javascript" type="text/javascript">
function GenerateContentList(){
    var jquery_h2_list = $('#newstext h2');//如果你的章节标题不是h2,只需要将这里的h2换掉即可
    if(jquery_h2_list.length>0){
        content = '<div id="navCategory">';
        content += '<p class="h2">阅读目录</p>';
        content += '<ul>';
        for(var i =0;i<jquery_h2_list.length;i++){
            var go_to_top = '<a href="#navCategory" rel="external nofollow" rel="external nofollow" class="backtotop">回到顶部</a><a name="_label' + i + '" class="backtotop"></a>';
            var li_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(jquery_h2_list[i]).text() + '</a></li>';
            $(jquery_h2_list[i]). append(go_to_top);
            content += li_content;
        }
        content += '</ul>';
        content += '</div>';
        if($('#newstext').length != 0 ){
            $($('#newstext')[0]).prepend(content);
        }
    } 
}
GenerateContentList();
</script>

 

方案二:支持二级分类

通过<h2><h3>实现

HTML代码部分:
<!DOCTYPE >   
<head>   
<title>目录索引生成代码</title>   
<script type="text/javascript" src="https://www.mochoublog.com/skin/more/js/jquery.min.js"></script>  
</head>   
<body>   
<div id='cnblogs_post_body'>  
    <h2>第一部分</h2>  
        <h3>章节1</h3>  
            <p>这里是章节1的内容</p>  
        <h3>章节2</h3>  
            <p>这里是章节2的内容</p>  
        <h3>章节3</h3>  
            <p>这里是章节3的内容</p>  
        <h3>章节4</h3>  
            <p>小小代码,不值一提,如果您觉得对您还有一点用,就点个赞支持一下吧。</p>  
    <h2>第二部分</h2>  
        <h3>章节1</h3>  
            <p>这里是章节1的内容</p>  
        <h3>章节2</h3>  
            <p>这里是章节2的内容</p>  
        <h3>章节3</h3>  
            <p>这里是章节3的内容</p>  
        <h3>章节4</h3>  
            <p>小小代码,不值一提,如果您觉得对您还有一点用,就点个赞支持一下吧。</p>  
</div>  
</body>   
</html>  

JavaScript:
<script language="javascript" type="text/javascript">  
function GenerateContentList()  
{  
 var mainContent = $('#cnblogs_post_body');  
 var h2_list = $('#cnblogs_post_body h2');//如果你的章节标题不是h2,只需要将这里的h2换掉即可  
   
 if(mainContent.length < 1)  
 return;  
    
 if(h2_list.length>0)  
 {  
 var content = '<a name="_labelTop"></a>';  
 content += '<div id="navCategory">';  
 content += '<p style="font-size:18px"><b>目录</b></p>';  
 content += '<ul>';  
 for(var i=0; i<h2_list.length; i++)  
 {  
  var go_to_top = '<div style="text-align: right"><a href="#_labelTop" rel="external nofollow" rel="external nofollow" >回到顶部</a><a name="_label' + i + '"></a></div>';  
  $(h2_list[i]).before(go_to_top);  
     
  var h3_list = $(h2_list[i]).nextAll("h3");  
  var li3_content = '';  
  for(var j=0; j<h3_list.length; j++)  
  {  
  var tmp = $(h3_list[j]).prevAll('h2').first();  
  if(!tmp.is(h2_list[i]))  
   break;  
  var li3_anchor = '<a name="_label' + i + '_' + j + '"></a>';  
  $(h3_list[j]).before(li3_anchor);  
  li3_content += '<li><a href="#_label' + i + '_' + j + '" rel="external nofollow" >' + $(h3_list[j]).text() + '</a></li>';  
  }  
     
  var li2_content = '';  
  if(li3_content.length > 0)  
  li2_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(h2_list[i]).text() + '</a><ul>' + li3_content + '</ul></li>';  
  else  
  li2_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(h2_list[i]).text() + '</a></li>';  
  content += li2_content;  
 }  
 content += '</ul>';  
 content += '</div><p> </p>';  
 content += '<p style="font-size:18px"><b>正文</b></p>';  
 if($('#cnblogs_post_body').length != 0 )  
 {  
  $($('#cnblogs_post_body')[0]).prepend(content);  
 }  
 }   
}  
GenerateContentList();  
</script>  

方案三:支持三级目录

通过<h2><h3><h4>实现

HTML:
<!DOCTYPE >   
<head>   
<title>目录索引生成代码</title>   
<script type="text/javascript" src="https://www.mochoublog.com/skin/more/js/jquery.min.js"></script>  
</head>   
<body>   
    <div id='cnblogs_post_body'>  
        <h2>第一部分</h2>  
        <h3>章节1</h3>  
            <h4>第一小节</h4>  
            <p>这里是第一小节的内容</p>  
            <h4>第二小节</h4>  
            <p>这里是第二小节的内容</p>  
        <h3>章节2</h3>  
            <p>这里是章节2的内容</p>  
        <h3>章节3</h3>  
            <p>这里是章节3的内容</p>  
        <h3>章节4</h3>  
            <p>小小代码,不值一提,如果您觉得对您还有一点用,就点个赞支持一下吧。</p>  
    <h2>第二部分</h2>  
        <h3>章节1</h3>  
            <p>这里是章节1的内容</p>  
        <h3>章节2</h3>  
            <p>这里是章节2的内容</p>  
        <h3>章节3</h3>  
            <p>这里是章节3的内容</p>  
        <h3>章节4</h3>  
            <p>小小代码,不值一提,如果您觉得对您还有一点用,就点个赞支持一下吧。</p>  
    </div>  
</body>   
</html> 

JavaScript:
<script language="javascript" type="text/javascript">  
 //生成目录索引列表  
 function GenerateContentList() {  
  var jquery_h1_list = $('#cnblogs_post_body h2');  
  if (jquery_h1_list.length == 0) { return; }  
  if ($('#cnblogs_post_body').length == 0) { return; }  
   
  var content = '<a name="_labelTop"></a>';  
  content += '<div id="navCategory">';  
  content += '<p style="font-size:18px"><b>目录</b></p>';  
  // 一级目录 start  
  content += '<ul class="first_class_ul">';  
   
  for (var i = 0; i < jquery_h1_list.length; i++) {  
  var go_to_top = '<div style="text-align: right"><a name="_label' + i + '"></a></div>';  
  $(jquery_h1_list[i]).before(go_to_top);  
   
  // 一级目录的一条  
  var li_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(jquery_h1_list[i]).text() + '</a></li>';  
   
  var nextH1Index = i + 1;  
  if (nextH1Index == jquery_h1_list.length) { nextH1Index = 0; }  
  var jquery_h2_list = $(jquery_h1_list[i]).nextUntil(jquery_h1_list[nextH1Index], "h3");  
  // 二级目录 start  
  if (jquery_h2_list.length > 0) {  
   //li_content +='<ul style="list-style-type:none; text-align: left; margin:2px 2px;">';  
   li_content += '<ul class="second_class_ul">';  
  }  
  for (var j = 0; j < jquery_h2_list.length; j++) {  
   var go_to_top2 = '<div style="text-align: right"><a name="_lab2_' + i + '_' + j + '"></a></div>';  
   $(jquery_h2_list[j]).before(go_to_top2);  
   // 二级目录的一条  
   li_content += '<li><a href="#_lab2_' + i + '_' + j + '" rel="external nofollow" >' + $(jquery_h2_list[j]).text() + '</a></li>';  
   
   var nextH2Index = j + 1;  
   var next;  
   if (nextH2Index == jquery_h2_list.length) {  
   if (i + 1 == jquery_h1_list.length) {  
    next = jquery_h1_list[0];  
   }  
   else {  
    next = jquery_h1_list[i + 1];  
   }  
   }  
   else {  
   next = jquery_h2_list[nextH2Index];  
   }  
   var jquery_h3_list = $(jquery_h2_list[j]).nextUntil(next, "h4");  
   // 三级目录 start  
   if (jquery_h3_list.length > 0) {  
   li_content += '<ul class="third_class_ul">';  
   }  
   
   for (var k = 0; k < jquery_h3_list.length; k++) {  
   var go_to_third_Content = '<div style="text-align: right"><a name="_label3_' + i + '_' + j + '_' + k + '"></a></div>';  
   $(jquery_h3_list[k]).before(go_to_third_Content);  
   // 三级目录的一条  
   li_content += '<li><a href="#_label3_' + i + '_' + j + '_' + k + '" rel="external nofollow" >' + $(jquery_h3_list[k]).text() + '</a></li>';  
   }  
   
   if (jquery_h3_list.length > 0) {  
   li_content += '</ul>';  
   }  
   li_content += '</li>';  
   // 三级目录 end  
  }  
  if (jquery_h2_list.length > 0) {  
   li_content += '</ul>';  
  }  
  li_content += '</li>';  
  // 二级目录 end  
   
  content += li_content;  
  }  
  // 一级目录 end  
  content += '</ul>';  
  content += '</div>';  
   
  $($('#cnblogs_post_body')[0]).prepend(content);  
 }  
   
 GenerateContentList();  
 </script>  
 

原文注

文章中建议使用的是<h2><h3><h4>...,根据SEO的说法,页面中大量出现H1标签会对权重有影响。
 

下载鸥附注

本文是通过js+jQuery的形式实现目录的自动生成,但此类生成形式基本属于用户体验,本质上对seo并无多大的帮助。功能上线后经过百度抓取测试,生成的目录未能被百度抓取到。

本文转自莫愁blog 原文链接https://www.mochoublog.com/study/255.html
 

可被蜘蛛识别抓取的目录

如需提升对蜘蛛的友好度需使用php方式生成,可查阅本文:帝国cms自动生成文章目录插件

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

有帮助,很赞!

信息来源:莫愁blog
导出教程 下载word版教程
发表评论 共有条评论
  • 隐藏的大佬 2021-05-10 16:35:16评论 #沙发#

    本来看到是js实现的,纠结对seo没效果,纠结半天都要上手做了,幸亏最后看到了php版本,hahahah~

  • 隐藏的大佬 2021-05-10 17:06:18评论 #板凳#

    支持支持,很妙

关于帝国CMS


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

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

推荐帝国CMS开发教程
帝国cms怎样去掉选择注册会员类型?
帝国cms怎样去掉选择注册会员类型?

帝国cms会员用户组功能十分强大,用户可以根据情况选择个人会员或企业会员等,...

1 406
帝国CMS有栏目seo标题吗,在哪里设置?
帝国CMS有栏目seo标题吗,在哪里设置?

很多用惯了织梦CMS的朋友在用帝国以后就会非常困惑,因为织梦CMS他的栏目是有...

1 345
帝国CMS生成选项是“ID目录”无斜扛解决的方法
帝国CMS生成选项是“ID目录”无斜扛解决的方法

如果你栏目生成选项选择的ID目录,那么帝国他生成的地址会少一个斜扛,访问时就...

3 454
帝国CMS怎样修改首页模板?
帝国CMS怎样修改首页模板?

网站在运营过程中难免要进行小小的修修改改,此时如果找人就比较麻烦,自己改试...

1 326
帝国cms怎样展示会员总数与最新注册的会员名称?
帝国cms怎样展示会员总数与最新注册的会员名称?

如果网站会员数量较多,展示会员总数与最新注册会员名可以有效提升用户留存。...

3 392
帝国cms碎片功能使用详解
帝国cms碎片功能使用详解

帝国CMS提供了强大的碎片功能,其位置位于【栏目】-》【碎片管理】-》【管理...

0 392
帝国cms列表页怎样用自带函数自动生成缩略图?
帝国cms列表页怎样用自带函数自动生成缩略图?

如果列表页图片尺寸相对于标题图更小,我们就可以使用帝国cms自带的缩略图函...

0 334
帝国cms怎样修改系统模型ID
帝国cms怎样修改系统模型ID

帝国cms默认是不允许修改系统模型ID的,因为一旦修改牵扯较大。那么,如果一定...

0 735
推荐插件
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 757
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

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

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

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

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

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

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

0 699
帝国cms百度AI黑白图像上色api接口对接插件
帝国cms百度AI黑白图像上色api接口对接插件

百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...

0 368
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

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

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

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