tsurumure vor 5 Monaten
Ursprung
Commit
a1ce9160e5

+ 11 - 10
db/cms_navigation_i18n.sql

@@ -11,16 +11,17 @@ CREATE TABLE `cms_navigation_i18n` (
     `navigation_id` BIGINT NOT NULL COMMENT '导航ID',
     `language` VARCHAR(10) NOT NULL COMMENT '语种',
     `navigation_name` VARCHAR(255) NOT NULL COMMENT '菜单名称',
-    `link` VARCHAR(1000) COMMENT '链接'
+    `link` VARCHAR(1000) COMMENT '链接',
+    `link_start_with` text COMMENT '链接匹配路径'
 ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='导航翻译表';
 
-INSERT INTO cms_navigation_i18n(navigation_id, language, navigation_name, link) VALUES
-    (1, 'zh', '首页', '/'),
-    (1, 'en', 'Home', '/'),
-    (2, 'zh', '关于我们', '/pages/about'),
-    (2, 'en', 'About', '/pages/about'),
-    (3, 'zh', '资讯中心', '/article/list'),
-    (3, 'en', 'Article', '/article/list'),
-    (3, 'zh', '联系我们', '/pages/concat'),
-    (3, 'en', 'Concat us', '/pages/concat')
+INSERT INTO cms_navigation_i18n(navigation_id, language, navigation_name, link, link_start_with) VALUES
+    (1, 'zh', '首页', '/', null),
+    (1, 'en', 'Home', '/', null),
+    (2, 'zh', '关于我们', '/pages/about', null),
+    (2, 'en', 'About', '/pages/about', null),
+    (3, 'zh', '资讯中心', '/article/list', '/article'),
+    (3, 'en', 'Article', '/article/list', '/article'),
+    (3, 'zh', '联系我们', '/pages/concat', null),
+    (3, 'en', 'Concat us', '/pages/concat', null)
 ;

+ 3 - 1
src/main/java/com/backendsys/modules/cms/navigation/entity/NavigationI18n.java

@@ -26,5 +26,7 @@ public class NavigationI18n {
     private String navigation_name;
     @Size(max = 1000, message = "链接长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String link;
-    
+    @Size(max = 5000, message = "链接匹配路径长度不超过 {max} 字符", groups = { Create.class, Update.class })
+    private String link_start_with;
+
 }

+ 2 - 2
src/main/java/com/backendsys/modules/cms/template/ViewArticleController.java

@@ -41,7 +41,7 @@ public class ViewArticleController {
     @Pages
     @Operation(summary = "资讯列表 (视图)")
     @GetMapping({"/article/list"})
-    public String article(Model model,
+    public String articleList(Model model,
         @RequestParam(value = "page_num", defaultValue = "1") Integer pageNum,
         @RequestParam(value = "page_size", defaultValue = "10") Integer pageSize,
         @RequestParam(value = "title", required = false) String title,
@@ -86,7 +86,7 @@ public class ViewArticleController {
 
     @Pages
     @Operation(summary = "资讯详情 (视图)")
-    @GetMapping({"/articleDetail/{uid}"})
+    @GetMapping({"/article/detail/{uid}"})
     public String articleDetail(Model model, @PathVariable("uid") String uid) {
 
         String lang = Convert.toStr(model.getAttribute("lang"));

+ 3 - 0
src/main/resources/mapper/cms/navigation/NavigationDao.xml

@@ -8,6 +8,7 @@
         n.parent_id parent_id,
         nt.navigation_name navigation_name,
         COALESCE(nt.link, '') link,
+        COALESCE(nt.link_start_with, '') link_start_with,
         n.sort sort,
         n.is_blank is_blank
     </sql>
@@ -30,6 +31,7 @@
         <result property="parent_id" column="parent_id" javaType="java.lang.Long" />
         <result property="navigation_name" column="navigation_name" />
         <result property="link" column="link" />
+        <result property="link_start_with" column="link_start_with" />
         <result property="sort" column="sort" javaType="java.lang.Integer" />
         <result property="is_blank" column="is_blank" javaType="java.lang.Integer" />
     </resultMap>
@@ -40,6 +42,7 @@
         <result property="parent_id" column="parent_id" javaType="java.lang.Long" />
         <result property="navigation_name" column="navigation_name" />
         <result property="link" column="link" />
+        <result property="link_start_with" column="link_start_with" />
         <result property="sort" column="sort" javaType="java.lang.Integer" />
         <result property="is_blank" column="is_blank" javaType="java.lang.Integer" />
         <collection property="translations" javaType="java.util.List"

+ 3 - 3
src/main/resources/templates/article.html

@@ -14,16 +14,16 @@
 
           <div class="article-list">
             <div class="article-item" th:each="item, itemStat : ${articleList.list}">
-              <a class="article-thumb" th:if="${item.thumb != ''}" th:href="@{'/articleDetail/' + ${item.uid}}"><img th:src="${item.thumb}" /></a>
+              <a class="article-thumb" th:if="${item.thumb != ''}" th:href="@{'/article/detail/' + ${item.uid}}"><img th:src="${item.thumb}" /></a>
               <div class="article-info">
-                <a class="article-info-title" th:href="@{'/articleDetail/' + ${item.uid}}">
+                <a class="article-info-title" th:href="@{'/article/detail/' + ${item.uid}}">
                   <span th:text="${item.title}"></span>
                   <span th:if="${item.is_top == 1}" th:text="@{'[' + #{settop} + ']'}"></span>
                 </a>
                 <div class="article-info-description" th:text="${item.description}"></div>
                 <div class="article-info-bottom">
                   <div class="article-info-time" th:text="${item.create_time}"></div>
-                  <a class="article-info-btn" th:href="@{'/articleDetail/' + ${item.uid}}" th:text="#{viewdetail}"></a>
+                  <a class="article-info-btn" th:href="@{'/article/detail/' + ${item.uid}}" th:text="#{viewdetail}"></a>
                 </div>
               </div>
             </div>

+ 15 - 5
src/main/resources/templates/layout/layout-header.html

@@ -11,13 +11,23 @@
     <ul class="nav" id="nav">
 
 <!--      <li class="first-nav-item" th:text="#{sub.sider.title.nav}"></li>-->
-
       <li th:each="nav, iterStat : ${navigation}">
 <!--        <div class="flex justify-between">-->
-          <a th:href="${nav.link}"
-             th:class="${'link underline-hover underline-offset-4 ' + (request_uri == nav.link ? 'active' : '') + (nav.is_blank == 1 ? 'underline' : '')}">
-            <span th:text="${nav.navigation_name}"></span>
-          </a>
+
+        <a th:href="${nav.link}"
+           th:class="${'link underline-hover underline-offset-4 ' +
+             (nav.link_start_with.isEmpty() && request_uri == nav.link ? 'active' : '') +
+             (!nav.link_start_with.isEmpty() && request_uri.startsWith(nav.link_start_with) ? 'active' : '') +
+             (nav.is_blank == 1 ? 'underline' : '')}">
+          <span th:text="${nav.navigation_name}"></span>
+        </a>
+
+<!--          <a th:href="${nav.link}"-->
+<!--             th:class="${'link underline-hover underline-offset-4 ' + (request_uri == nav.link ? 'active' : '') + (nav.is_blank == 1 ? 'underline' : '')}">-->
+<!--            <span th:text="${nav.navigation_name}"></span>-->
+<!--          </a>-->
+
+
 <!--          <span th:if="${nav.children.size > 0}" class="nav-more" id="navMore">+</span>-->
 <!--        </div>-->
 <!--        &lt;!&ndash; 子级导航 &ndash;&gt;-->