publiccms实现遍历多级分类下的不同样式内容

简介: publiccms实现遍历多级分类下的不同样式内容

前言

现在是2022年1月2日17:06:51,假期这两天都在做publiccms

上篇文章遗留的问题,最终还是没有按照富文本去做,后期在看吧;

今天遇到了个问题,解决了好久,特此记录一下…等写完回头看的时候其实也不难,但是当时哎做的时候,就是没有这样的思路,可能也与freemarker的语法有关,用起来确实别扭,要是换做java,这个问题也不至于解决的这么慢。

效果分析:

效果如图所示,具体分析一下:

  • 学术研究:一级分类,编号为8
  • 运动健康、医疗健康、饮食健康:二级分类,父级分类的编号为8
  • 项目、学术、研发团队:三级分类,父级分类分别为二级分类
  • 列表、卡片、表格:三级分类下的内容,各三级分类下面对应的内容样式不一样。

要实现的效果就是将数据库中的分类都遍历出来,而且将各分类下面的内容遍历展示出来。

实现思路:

二级分类很好遍历,根据父分类的编号即可遍历出来,代码如下:

 <@_categoryList parentId=8>
      <#list page.list as a>    
         <div class="col-lg-2 col-md-2 col-sm-2 col-xs-0" style="padding: 0;opacity: 0;float: left;">0</div>
         <li class="xueshu1">${a.name!}</li>
      </#list>
</@_categoryList>

三级分类也相对简单,在遍历二级分类的同时,再加入一个循环即可,代码如下:

 <@_categoryList parentId=8>
      <#list page.list as a>    
             <@_categoryList parentId=a.id>
                  <#assign counts_cate=0> 
                      <#list page.list as cate>
         <li class="xueshu1">${a.name!}</li>
                      <#assign counts_cate=counts_cate+1> 
                       </#list>
           </@_categoryList>                       
      </#list>
</@_categoryList>

这里还涉及到了个问题,因为用到tab选项卡,所有href后面的地址需要和下面内容的id地址一样,不然点击的tab标题的时候找不到对应的内容。

image-20220102173726375

我用的方法是重新加了两个变量,外层循环一个,内层循环一个,这样既不会重复,也能和上面的标题href后面的值对应上。

假如每个三级分类下面的内容都一样的话,我就可以直接根据三级分类,再次遍历该分类下面的内容,但是,不一样……,三个分类的内容都不一样,一下子不知道咋遍历了。

后来又是通过加了个变量,判断变量的值,代码如下:

image-20220102175145062

 <!--中间内容-->
        <div class="container" style="padding: 0;">
            <div class="col-lg-2 col-md-2 col-sm-2 col-xs-0" style="padding: 0;opacity: 0;">0</div>
            <div class="col-lg-8 col-md-8 col-sm-8 col-xs-12 price" style="padding: 10px;">

                <!--三个标题-->
                <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 category" style="z-index: 99;padding: 0;">
                    <ul>

                         <@_categoryList parentId=8>
                                 <#list page.list as a>    
                        <div class="col-lg-2 col-md-2 col-sm-2 col-xs-0" style="padding: 0;opacity: 0;float: left;">0
                        </div>
                        <li class="xueshu1">${a.name!}</li>
                         </#list>
                            </@_categoryList>

                    </ul>
                </div>


                 <@_categoryList parentId=8>
                                <#assign counts=0> 
                                 <#list page.list as a> 
                <!--第一个内容-->
                <div class="cont"></div>                
                <div class="cont  cont_bianli" style="z-index: 0;">
                    <div class="col-lg-2 col-md-2 col-sm-2 col-xs-0" style="padding: 0;opacity: 0;height: 58px;">0</div>
                    
                    <!-- 第一个内容下的子分类 -->
                    <ul class="col-lg-8 col-md-8 col-sm-8 col-xs-12 tabs" data-tab
                        style="z-index: 88;display: flex;align-items: center;">
                         <@_categoryList parentId=a.id>
                                 <#assign counts_cate=0> 
                                 <#list page.list as cate>

                        <li class="tab-title"><a href="#home${counts}${counts_cate}">${cate.name!}</a></li>

                         <#assign counts_cate=counts_cate+1> 
                            </#list>
                            </@_categoryList>
                    </ul>

                    <div class="col-lg-2 col-md-2 col-sm-2 col-xs-0" style="padding: 0;opacity: 0;height: 58px;">0</div>
                    <div class="tabs-content" style="z-index: 0;">

                        <@_categoryList parentId=a.id>
                                 <#assign counts_cate=0> 
                                 <#list page.list as cate>
                         <!-- 如果是第一次遍历,就走第一个 -->  
                            <#if counts_cate==0>
                                <!-- 第一个分类下的内容 -->
                                    <div class="content" id="home${counts}${counts_cate}" style="margin-top: 80px;">
                                        
                                        <@_contentList categoryId=cate.id   pageSize=3>
                                            <#list page.list as b>    
                                        <div class="xiangmu" style="width: 100%;margin-bottom: 50px;max-height: 900px;">
                                            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12"
                                                style="float: left;height: 318px;padding: 0;margin-bottom: 70px;background-image: url(${b.cover!});background-size: 100% 100%;">
                                            </div>
                                            <div class="col-lg-1 col-md-1 col-sm-1 col-xs-0"
                                                style="padding: 0;opacity: 0;height: 318px;margin-bottom: 70px;">0</div>
                                            <div class="col-lg-7 col-md-7 col-sm-7 col-xs-12"
                                                style="height: 318px;float: left;padding: 0;margin-bottom: 70px;">
                                                <div class="titles"
                                                    style="margin-top: 36px;height: 15px;font-size: 20px;font-weight: 900;color: #1D1D28;">
                                                    ${b.title!}
                                                </div>
                                                <div class="wenzhang"
                                                    style="width: 100%;margin-top: 29px;font-size: 16px;font-weight: 400;color: #333333;">
                                                    ${b.description!}
                                                </div>
                                                <a href="${b.url!}">
                                                    <div class="zhixun_chakangengduo">
                                                        <span>查看更多</span>
                                                        <div class="zhixun_img">
                                                        </div>
                                                    </div>
                                                </a>
                                            </div>
                                        </div>
                                         </#list>
                                        </@_contentList> 
                                        
                                    </div>
                            
                            </#if>         
                        

                        <!-- 如果是第2次遍历,就走第2个 -->
                         <#if counts_cate==1>
                                <!-- 第二个分类下的内容 -->
                                <div class="content" id="home${counts}${counts_cate}" style="margin-top: 80px;">
                                    
                                     <@_contentList categoryId=cate.id   pageSize=4>
                                    <#list page.list as b>     
                                        <div class="col-lg-5 col-md-5 col-sm-5 col-xs-12 xueshuDiv"
                                            style="height: 284px;float: left;border: 1px solid;">
                                            <div style="margin-left: 25px;height: 284px;width: 93%;float: left;">
                                                <div class="titles"
                                                    style="margin-top: 36px;height: 15px;font-size: 20px;font-weight: 900;color: #1D1D28;">
                                                    ${b.title!}
                                                </div>
                                                <div class="wenzhang"
                                                    style="width: 100%;margin-top: 29px;font-size: 16px;font-weight: 400;color: #333333;">
                                                    ${b.description!}
                                                </div>

                                                <a href="${b.url!}">
                                                    <div class="zhixun_chakangengduo">
                                                        <span>查看更多</span>
                                                        <div class="zhixun_img">
                                                        </div>
                                                    </div>
                                                </a>
                                            </div>
                                        </div>
                                    </#list>
                                    </@_contentList> 
                                    
                                </div>
                        </#if>

                         <#if counts_cate==2>
                                    <!-- 如果是第3次遍历,就走第3个 -->

                                    <!-- 第三个分类下的内容 -->
                                    <div class="content" id="home${counts}${counts_cate}" style="margin-top: 80px;">
                                        <div class="containerss">

                                             <@_contentList categoryId=cate.id   pageSize=4>
                                                    <#list page.list as b>  
                                            <div class="son">
                                                <img src="${b.cover!}" style="width: 200px;height: 267px;">
                                                <div
                                                    style="margin-top: 32px; text-align: center;font-size: 20px;font-weight: bold;">
                                                    ${b.title!}
                                                </div>
                                                <div
                                                    style="margin-top: 15px;text-align: center;font-size: 16px;font-weight: 400;color: #535353;">
                                                    ${b.description!}
                                                </div>
                                            </div>
                                                  </#list>
                                                </@_contentList>
                                                   
                                            
                                            
                                           
                                        </div>
                                    </div>
                        </#if>
                        <!-- 遍历结束 -->


                        <#assign counts_cate=counts_cate+1> 
                            </#list>
                            </@_categoryList>    

                    </div>
                </div>
                </#list>
                     <#assign counts=counts+1> 
                            </@_categoryList>


            

            </div>
        </div>
        <!--中间内容结束-->

看上去有点乱,freemarker的语法不但不会自动缩进,反而赋值上去还会更乱,懒的缩进了…

从刚开始讨厌freemarker到现在越来越上手,不得不说这是一个很大的进步!!!

目录
相关文章
|
7月前
|
消息中间件 运维 Java
搭建Zookeeper、Kafka集群
本文详细介绍了Zookeeper和Kafka集群的搭建过程,涵盖系统环境配置、IP设置、主机名设定、防火墙与Selinux关闭、JDK安装等基础步骤。随后深入讲解了Zookeeper集群的安装与配置,包括数据目录创建、节点信息设置、SASL认证配置及服务启动管理。接着描述了Kafka集群的安装,涉及配置文件修改、安全认证设置、生产消费认证以及服务启停操作。最后通过创建Topic、发送与查看消息等测试验证集群功能。全网可搜《小陈运维》获取更多信息。
600 1
|
缓存 安全 PHP
【PHP开发专栏】Twig模板引擎在PHP中的应用
【4月更文挑战第30天】Twig是Fabien Potencier开发的PHP模板引擎,以其易读性、可扩展性、安全性和高性能著称。文章分三部分介绍:1) 通过Composer安装Twig;2) 学习基本语法,如变量、表达式、标签和过滤器;3) 在Symfony和Laravel框架及独立PHP项目中应用Twig。示例展示了如何渲染模板、使用for和if标签,以及在不同框架中整合Twig。
438 0
|
JavaScript NoSQL Redis
深入浅出:使用 Docker 容器化部署 Node.js 应用
在当今快速发展的软件开发领域,Docker 作为一种开源的容器化技术,已经成为了提高应用部署效率、实现环境一致性和便于维护的关键工具。本文将通过一个简单的 Node.js 应用示例,引导读者从零开始学习如何使用 Docker 容器化技术来部署应用。我们不仅会介绍 Docker 的基本概念和操作,还会探讨如何构建高效的 Docker 镜像,并通过 Docker Compose 管理多容器应用。此外,文章还将涉及到一些最佳实践,帮助读者更好地理解和应用 Docker 在日常开发和部署中的强大功能。
1719 0
|
Windows 网络协议 内存技术
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
2天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
343 90
|
9天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
823 156
|
2天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
244 156