实现文章列表显示分类名称,基于若依单体版ruoyi-fast开发的内容管理系统 ruoyi-fast-cms开源分享

一、需求分析

每一个内容管理系统,必不可少的是文章管理,文章管理关联的往往是分类 id,如何实现在文章列表中通过分类 id 显示文章分类名称,这个需求小编先给查看下截图

实例来自于开源项目:https://github.com/huangxing2010/RuoYi-fast-cms

在这里插入图片描述

二、开发思路

Ruoyi-fast 是一个基于 Spring Boot 快速开发平台,为单体应用架构,那么构建一个内容管理系统(CMS)可以按照以下步骤进行:

  • 要将文章列表按照分类名称显示,你需要先根据每篇文章的 id 找到对应的分类 id,然后再根据分类 id 找到对应的分类名称。可以使用数据库查询或者 API 请求来实现这个功能。

  • 以下是一个示例的伪代码,假设你有一个包含文章信息的列表 articles,每篇文章都有一个 category_id 字段表示分类 id,同时你有一个包含分类信息的列表 ,每个分类都有一个 id 字段和一个 name 字段表示分类 id 和分类名称。

2.1 确定需求

  • 内容类型:文章、图片、视频等。
  • 用户角色:管理员、编辑、普通用户等。
  • 功能模块:内容发布、审核、分类管理、标签管理等。

2.2 设计数据库

• 内容表:存储文章标题、内容、分类、图片等内容的基本信息。

CREATE TABLE `sys_article` (
  `article_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文章ID',
  `dept_id` bigint(20) NOT NULL COMMENT '部门ID',
  `article_title` varchar(126) COLLATE utf8mb4_bin DEFAULT '' COMMENT '文章标题',
  `subhead` varchar(126) COLLATE utf8mb4_bin DEFAULT '' COMMENT '副标题',
  `category_id` bigint(20) DEFAULT NULL COMMENT '分类ID',
  `source` varchar(64) COLLATE utf8mb4_bin DEFAULT '' COMMENT '文章来源',
  `description` varchar(500) COLLATE utf8mb4_bin DEFAULT '' COMMENT '描述',
  `thumbnail` varchar(126) COLLATE utf8mb4_bin DEFAULT '' COMMENT '缩略图',
  `content` text COLLATE utf8mb4_bin COMMENT '内容',
  `degree_num` int(11) DEFAULT '0' COMMENT '访问次数',
  `remark` varchar(256) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注',
  `create_by` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`article_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='文章内容表';

• 分类表:存储内容的分类信息。

CREATE TABLE `sys_category` (
  `category_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  `parent_id` bigint(20) DEFAULT '0' COMMENT '父分类ID',
  `category_name` varchar(30) COLLATE utf8mb4_bin DEFAULT '' COMMENT '分类名称',
  `sort_num` int(6) DEFAULT '0' COMMENT '显示顺序',
  `cat_status` char(1) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `thumbnail` varchar(126) COLLATE utf8mb4_bin DEFAULT '' COMMENT '缩略图',
  `remark` varchar(256) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注',
  `create_by` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) COLLATE utf8mb4_bin DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='文章分类表';

2.3 开发环境

• Maven 版本使用的 3.8.5;
• jdk 使用的 jdk8;
• Thymeleaf 作为前端模板引擎。

2.4 配置依赖

在 pom.xml 中添加必要的依赖:

<!-- Spring Boot Starter Web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<!-- MySQL Connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- MyBatis Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

2.5 配置数据库

在 application.yml 中配置数据源:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

三、CRUD

使用框架自身的代码生成工具
在这里插入图片描述

四、Thymeleaf 网站PC端最佳选择

  • 易于学习和使用:Thymeleaf使用简单的HTML模板语法,与HTML标签紧密结合,使得开发者可以快速上手和使用。

  • 强大的表达能力:Thymeleaf提供了丰富的表达式语言,可以在模板中使用表达式进行条件判断、循环展示、数据转换等操作,使得模板具备了强大的逻辑处理能力。

  • 完善的国际化支持:Thymeleaf内置了对多语言的支持,可以根据不同的区域设置来展示不同的文本内容,方便开发多语言环境下的应用程序。

  • 可以与Spring框架无缝集成:Thymeleaf与Spring框架紧密结合,可以很方便地使用Thymeleaf作为Spring MVC的视图技术,实现动态的页面展示。

  • 可以渲染静态HTML文件:Thymeleaf不仅可以渲染动态页面,还可以渲染静态的HTML文件,使得开发者可以在页面中嵌入动态内容,提升用户体验。

  • 支持模板片段的重用:Thymeleaf可以将页面的部分代码定义为模板片段,然后在不同的页面中重用这些模板片段,减少了代码的重复编写,提高了开发效率。

五、调用分类名称

重点往往在下面

5.1修改前端代码

前端采用 ajax 调用分类方法
前端 get 类型传递分类 id 到后端,数据类型采用 jsong格式

{
                    field: 'categoryId',
                    title: '栏目分类',
                    formatter: function (value, row, index) {
                        if (value > 0) {
                            let targetElement = 'cat' + row.articleId
                            $.ajax({
                                type: "get",
                                url: prefix + "/getCategory/" + value,
                                datatype: 'json',
                                cache: false,
                                contentType: false,
                                processData: false,
                                success: function (data) {
                                    $('#' + targetElement).text(data.cname);
                                },
                                error: function (error) {
                                    console.log('Error: ' + error);
                                }
                            })
                            return '<span id="' + targetElement + '"  style="color: #2b2b2b">0</span>'
                        }
                    }
                },

5.2 后端方法

定义一个控制器方法来处理前端的请求。

当用户点击页面上的按钮时,前端会通过 Ajax 向指定的后端 URL 发送一个 GET 请求。后端接收到请求后,由Controller类中的getCategoryInfo方法处理,并返回一个map给前端。

/**
     * 文章列表里的分类
     */
    @GetMapping("/getCategory/{categoryId}")
    @ResponseBody
    public AjaxResult getCategoryInfo(@PathVariable(value = "categoryId", required = false) Long categoryId){
        PortalCategory category = portalCategoryService.selectPortalCategoryByCategoryId(categoryId);
        AjaxResult ajax = AjaxResult.success();
        ajax.put("cname", category.getCategoryName());
        ajax.put("cid", category.getCategoryId());

        return ajax;
    }

六、总结

  • 通过以上步骤和代码示例,可以在内容管理系统中实现文章列表显示分类的功能。具体的实现方式可以根据使用的技术栈和具体需求进行调整和扩展。
  • 你可以基于 Ruoyi-fast 单体版构建一个基本的内容管理系统。如果有更多复杂的需求,可以根据实际情况进行扩展和优化;
    你如果想借助一套脚手架 java cms 内容管理系统,推荐开源项目:ruoyi-fast-cms,功能简洁实用,没有复杂的封装,开箱即用。
  • 总体而言,Ruoyi-fast 单体版可以作为一个快速搭建网站的选择,但在使用之前,你需要充分考虑项目的具体需求、技术要求和未来的发展规划。如果项目需求相对简单,对灵活性和性能要求不是特别高,那么 ruoyi-fast-cms,可以是一个不错的选择。但如果项目有较高的定制化需求或对性能和技术更新有较高要求,可能需要考虑更加灵活的架构或定制开发。
Bug修复: 1.使用最新的struts2 jar包,修复struts2 exp漏洞。 功能新增: 1.信息添加或编辑后提示是否静态化所属栏目页面、原所属栏目页面、所属栏目父栏目页面、站点首页。 2.栏目编辑成功后,提示是否静态化本栏目页面、本栏目父栏目页面、站点首页。 3.信息删除时删除此信息的静态文件。 4.栏目删除时删除此栏目的静态文件。 5.站点删除时删除此站点的静态文件。 6.Ckeditor增加一键排插件,复制word内容不去除格式。 7.增加设置栏目下信息编辑操作(添加,编辑,删除)成功后,需要静态化的内容:本栏目页面,原栏目页面,父栏目栏目页面和站点首页。 8.添加模板时支持上传zip格式的模板文件。 9.模板增加初始化数据管理,可以设置初始化栏目、链接分类并可以从现有站点导入。模板导出功能,将模板文件和数据导出为zip压缩文件。 10.添加站点时判断选择模板是否有初始化数据,并可导入初始化数据到站点。 11.增加敏感词管理。 12.敏感词处理: 信息:标题,内容,摘要。 栏目:名称,描述。 评论:内容。 网上调查:名称,调查说明,调查选项。 13.移动信息功能,可把信息从一个栏目移动到另一个栏目。 13.复制信息功能,可把信息从一个栏目复制到另一个栏目。 14.系统级工作量统计,统计所有用户的工作量。 15.站点级工作量统计,统计当前管理站点下用户的工作量。 16.系统级站点信息统计,统计所有站点的信息量。 17.站点级栏目信息统计,统计当前管理站点下栏目的信息量。 18.系统评论开关,控制系统是否允许评论。 19.系统级信息更新统计,可按年、月、日、星期统计更新频率。 20.站点级信息更新统计,可按年、月、日、星期统计更新频率。 21.站点级栏目访问统计,统计当前管理站点下栏目的访问量。 22.站点级信息访问统计,统计当前管理站点下信息的访问量。 23.站点级访问频率统计,可按年、月、日、星期统计访问频率。 24.系统级访问频率统计,可按年、月、日、星期统计访问频率。 25.管理后台首页增加应用链接,分为系统链接和个人链接。 26.questionList,questionPage标签增加siteid参数。 27.link标签增加num参数。 28.增加系统配置site,设置访问首页时默认转向的站点。 29.channel表增加indexnum、maxpage字段。 30.修改栏目静态页面的存放目录,可以使用pagemark、indexnum、id做为目录名,优先级为 pagemark > indexnum > id。 31.info表增加htmlIndexnum字段。 32.生成信息静态页面时如果有indexnum则使用indexnum作为静态文件名称。 33.可设置栏目页面生成静态页面的最大页数。 34.增加信息提取功能,可以其它站点的信息提取到本站点。 35.信息编辑时如果没有选择信息图片,系统会检查内容中是否有图片,如有则提取第一张做为信息图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值