【最全最详细】publiccms常用的代码片段

简介: 【最全最详细】publiccms常用的代码片段

🧘‍♂️往期系列

这两天一直在整理Publiccms系列的教程,有需要的小伙伴们可以点击以下链接查看:

  1. publiccms使用教程(使用方式整理)
  2. 使用publiccms实现动态可维护的首页轮播
  3. 使用publiccms实现动态可维护的导航菜单栏
  4. 使用publiccms实现将公共部分提取成单独页面片段

✍本文目录

@[toc]

👨‍🏫前言

整理publiccms的教程到现在为止,发现这里面的东西其实也没多少,每个页面的实现方法有多种,思路不一样,方式也就不一样。

难的其实是,用到了许多稀奇古怪的代码,每次都记不住,虽然官方提供了模板帮助,去上面查第一浪费时间,第二里面的帮助文档不一定很全面,有的可能找不到。

介于此,我今天就来整理一些常用的代码片段。

👩‍💻页面片段

  1. 遍历所有页面片段的内容(一般用于遍历轮播、导航菜单等公共动态维护的信息)
<#list page.list>
    <ul>
    <#items as a>
        <li>
            <figure>
                <!-- ${a.itemType!} : ${a.itemId!} ,place/redirect:count and 301 jump to a.url,place/click:count and 302 jump to a.url-->
                <a href="${site.dynamicPath}place/redirect?id=${a.id!}" target="_blank"><img src="${a.cover!}"></a>
                <figcaption><a href="${a.url!}" target="_blank">${a.title!}</a>(${a.clicks!})</figcaption>
                扩展字段:<#assign attribute=getPlaceAttribute(a.id)/>
            </figure>
        </li>
    </#items>
    </ul>
</#list>

注意:

  • 链接如果是动态则:${site.dynamicPath}place/redirect?id=${a.id!}
  • 封面:${a.cover!}
  • 点击次数:${a.clicks!}
  • 提交用户:a.userId
  • 审核用户: a.checkUserId
  • 创建日期:a.publishDate
  • 标题:a.title

扩展字段的获取方式:

比如我们这个页面片段中有一个扩展数据,编码为info,那么我们在代码中如何获取呢?

${getPlaceAttribute(a.id).info!?no_esc}

★★★?no_esc:主要是用于富文本编辑器的时候,可以直接解析html代码。

👩‍💻分类模板

  1. 分类的模板文件中接受id或者其他参数
<@_category id=id>
    <#assign category=object/>
<#-- 参数:分类ID -->
<#assign attribute=getCategoryAttribute(id)/>
</@_category>

注意:首先需要在元数据中,开启允许动态访问,其次开设置一个可接受参数id,不设置是接收不到的。

image-20210825072504586

  1. 在分类模板文件中获取类别相关的信息:

    • 类别名称:category.name
    • 类别父编号:category.parentId
    • 分类类型:category.typeId
    • 所有子分类的id:category.childIds
    • 类别编码:category.code
    • 模板路径:category.templatePath
    • 首页路径:category.Path
    • 首页地址:category.url
    • 内容路径:category.contentPath

    3.判断该类别的父分类是否为空的案例操作:

     <div class="index_section sec02">
            <div class="container">
                <div class="row zxl99">
                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" data-scroll-reveal="enter bottom move 20px over 1.5s after 0.05s">
                        <div class="zxlb2">
                              <#if category.parentId??>
                                                <ul>
    
                                                <@_categoryList parentId=category.parentId>
                                                <#list page.list as a>
                                            <#if a.id==category.id>
                                                    <li class="zxlb10">
                                                            <a href="${a.url!}">${a.name}</a>
                                                    </li>
                                                        <#else>
                                                        <li>
                                                            <a href="${a.url!}">${a.name}</a>
                                                    </li>
                                            </#if>
    
                                                </#list>
                                            </@_categoryList>
                                        </ul>
                            
                            <#else>
                                  <ul>
    
                                                <@_categoryList parentId=category.id>
                                                 <#assign counts_a=true>
                                                <#list page.list as a>
                                      
                                            <#if counts_a==true>
                                                    <li class="zxlb10">
                                                            <a href="${a.url!}">${a.name}</a>
                                                    </li>
                                                        <#else>
                                                        <li>
                                                            <a href="${a.url!}">${a.name}</a>
                                                    </li>
                                            </#if>
                                                <#assign counts_a=false>   
                                                </#list>
                                            </@_categoryList>
                                        </ul>
                            
                              </#if>
                                
                        </div>
                    </div>

    此案例的实现的功能:先判断父分类是否为空,如果不为空时,则根据父分类遍历其子分类的内容链接地址

👩‍💻分类扩展

如果某一分类无法满足你的需求时,可以利用分类扩展的方式来实现,操作如下:

点击内容--》分类扩展--》创建或者修改分类类型--》名称可以根据实际起即可--》在下面增加行(此处增加的字段,在创建该分类类型时就可以填了,然后在分类的模板文件中即可获取,一般用于在某些分类中,想要动态维护某个单独块的内容比较方便)

image-20210825075058648

获取分类扩展的字段:

${getCategoryAttribute(id).cate_img!}

★★★cate_img:表示分类的扩展中手动增加的编码。

动态维护某个单独块的内容比较方便)

[外链图片转存中...(img-VY6DnuQp-1629850256280)]

获取分类扩展的字段:

${getCategoryAttribute(id).cate_img!}

★★★cate_img:表示分类的扩展中手动增加的编码。

目录
相关文章
|
SQL 存储 数据挖掘
大模型与数据分析:探索Text-to-SQL(下)
大模型与数据分析:探索Text-to-SQL(下)
1307 4
|
设计模式 算法 前端开发
【面试题】什么是策略模式?用了策略模式之后,再也不用写那么多 if else 了,真香!
【面试题】什么是策略模式?用了策略模式之后,再也不用写那么多 if else 了,真香!
213 0
|
10月前
|
缓存 Rust 算法
从混沌到秩序:Python的依赖管理工具分析
Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
330 35
|
9月前
|
人工智能 Linux API
Omnitool:开发者桌面革命!开源神器一键整合ChatGPT+Stable Diffusion等主流AI平台,本地运行不联网
Omnitool 是一款开源的 AI 桌面环境,支持本地运行,提供统一交互界面,快速接入 OpenAI、Stable Diffusion、Hugging Face 等主流 AI 平台,具备高度扩展性。
935 94
Omnitool:开发者桌面革命!开源神器一键整合ChatGPT+Stable Diffusion等主流AI平台,本地运行不联网
|
数据采集 存储 数据处理
数据治理:如何制定数据标准与规范
在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为了企业面临的重大挑战。数据治理作为确保数据质量、安全性、合规性和可访问性的关键过程,其核心在于制定并执行一套科学、合理的数据标准与规范。本文将探讨如何制定数据标准与规范,以推动企业的数据治理实践。
1989 3
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
418 104
|
11月前
|
消息中间件 Java 中间件
MQ四兄弟:如何保证消息可靠性
本文介绍了RabbitMQ、RocketMQ、Kafka和Pulsar四种消息中间件的可靠性机制。这些中间件通过以下几种方式确保消息的可靠传输:1. 消息持久化,确保消息在重启后不会丢失;2. 确认机制,保证消息从生产者到消费者都被成功处理;3. 重试机制,处理失败后的重试;4. 死信队列,处理无法消费的消息。每种中间件的具体实现略有不同,但核心思想相似,都是从生产者、中间件本身和消费者三个角度来保障消息的可靠性。
503 0
|
Linux Python
CentOS7安装Python3.8
CentOS7安装Python3.8
722 0
CentOS7安装Python3.8
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
311 0
|
XML Java 程序员
深入探讨Maven构建生命周期及插件机制
深入探讨Maven构建生命周期及插件机制
288 0