纸壳CMS主题增强,支持主题中加入模板
背景
在之前,纸壳CMS的主题仅仅只是CSS样式,并不支持在主题下使用模板来构建不同的HTML结构。现在我们对主题功能做了增强,可以在主题下添加各自的模板,这样在制作主题时,就会更加自由。不仅如此,新的主题引擎还允许替换系统中所有Action
对应的视图。
所以新的主题引擎可以修改包括后端在内的系统中的所有界面风格。
主题模板
纸壳CMS的所有组件、板块都有对应的默认模板。在制作主题的过程中,难免会遇到HTML结构不一至的情况,这时候就可以在对应的主题下添加显示模板来替换默认的模板。将组件的模板放入主题目录下的Views
目录即可:
例如,如果覆盖文章列表模板,可以在Views
目录下放入Widget.ArticleList.cshtml
或者Widget.ArticleList.fluid
,这样当选用该主题时,文章列表将会优先使用主题目录下的视图模板:
模板优先级
模板优先级最高的是主题目录下的模板,其次才是默认模板,查找模板的顺序如下:
- ~/
{CurrentTheme}
/Views/{Module}
/{Controller}
/{Action}
- ~/
{CurrentTheme}
/Views/{Controller}
/{Action}
- ~/
{CurrentTheme}
/Views/{ViewName}
- 默认
{CurrentTheme}
当前主题,{Module}
路由中的定义值,例如后端所有页面的Module值为admin
。
所以主题模板不仅能替换组件的视图,还可以替换Action
对应的视图。
我们对系统中的组件模板做了一些整理,可以使用以下链接下载包含所有默认组件模板的主题,可以使用Razor
或者Fluid:
- Razor
- Fluid
注意事项
- 主题中仅包含需要修改的模板文件即可。
- 当把其它插件中的视图模板复制到Views目录用vistal studio编辑时,会提示找不到类型引用的情况,可以不用管它,程序是可以正常运行的。如果为了可以更友好的输入代码,可以在插件目录制作好后再复制到主题的Views目录下。
发布和预编译
纸壳CMS发布的时候会预编译程序中的所有视图文件以得到更好的性能。但为了主题可以更方便的替换和时时生效,我们设置了在发布的时候阻止预编译主题相关的视图。如果还是希望预编译它们,可以移除ZKEACMS.WebHost.csproj
中的下列配置:
<ItemGroup><MvcRazorFilesToCompile Include="**\*.cshtml" Exclude="wwwroot\themes\**\*.cshtml;" />
</ItemGroup>
安全相关
由于主题是可以上传安装的,而Razor
几乎无所不能,所以为了安全,防止有人在主题模板中加入危险的C#代码,我们推荐您关闭主题的Razor
模板功能,而仅使用Fluid
模板。关闭的方式很简单,打开ZKEACMS.Fluid
插件目录下的appsettings.json
配置文件,将RazorViewEngine
的值改为false
即可。
原文链接:http://www.zkea.net/codesnippet/detail/theme-template.html
GitHub
https://github.com/SeriaWei/ZKEACMS
转载于:https://www.cnblogs.com/seriawei/p/zkeacms-theme-template.html
纸壳CMS主题增强,支持主题中加入模板相关推荐
- 纸壳CMS现已支持自定义扩展字段
简介 纸壳CMS是开源免费的可视化内容管理系统. GitHub https://github.com/SeriaWei/ZKEACMS 自定义字段 纸壳CMS现已支持自定义字段,在不修改代码的情况下, ...
- 纸壳cms支持php坏境吗,如何参与纸壳CMS开发以及贡献代码
纸壳CMS是基于GPL v3.0开源协议开源的自由软件,可以免费使用它来做任何开源项目.同时也可以提交您的代码到官方仓库,让您的修改不被覆盖.比如你修改了一个已知的BUG,就可以将你的修改提交给主仓库 ...
- zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql
纸壳CMS是基于ASP .Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. 方式一 直接运行以下命令即可在docker中运行纸 ...
- 纸壳CMS体验升级,快速创建页面,直接在页面中修改内容
关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...
- 纸壳CMS(ZKEACMS)体验升级,快速创建页面,直接在页面中修改内容
关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...
- 纸壳CMS 3.0升级.Net Core 2.1性能大提升
微软发布了.Net Core 2.1正式版,纸壳CMS也在第一时间做了升级,并做了一系列的优化和调整,性能大幅提升,并解决了一些历史遗留问题,添加了一些新功能. Gitee https://gitee ...
- 纸壳CMS可视化建站系统搭建多语言网站
纸壳CMS是可视化建站系统,现已经从架构上支持多语言.但是多语言功能默认是没有开启的.您可以从设置中开启多语言,或者随时关闭它,您可以随时进行切换. 开启多语言 如果您没有在系统设置中看到多语言设置菜 ...
- 纸壳CMS可视化建站系统创建多语言网站
纸壳CMS是可视化建站系统,现已经从架构上支持多语言.但是多语言功能默认是没有开启的.您可以从设置中开启多语言,或者随时关闭它,您可以随时进行切换. 开启多语言 如果您没有在系统设置中看到多语言设置菜 ...
- 用Docker自动构建纸壳CMS
纸壳CMS可以运行在Docker上,接下来看看如何自动构建纸壳CMS的Docker Image.我们希望的是在代码提交到GitHub以后,容器镜像服务可以自动构建Docker Image,构建好以后, ...
最新文章
- W7程序计算机面板介绍,win7系统隐藏任意程序运行界面的详细步骤
- POJ 1287 Prim算法模板
- 网购到火车票 浅析淘宝和12306网站架构
- 引导类加载器 Bootstrap ClassLoader
- 计算机网络(二十五)-IP数据报格式
- 计算机人文研究生专业,西安科技大学,艺术、人文、材料、计算机、通信等专业调剂信息...
- Office 2007打开提示The setup controller has encountered
- flutter实现画中国地图
- 如何使用光学检测汽车前仪表盘玻璃
- ENVI遥感处理(9):遥感影像镶嵌和图像裁剪
- 西部旅游杂志西部旅游杂志社西部旅游编辑部2022年第19期目录
- 高德地图样式主题设置
- python坦克大战
- C++笔记——第十一篇 多态 深入剖析
- Android多媒体框架(二)Codec初始化及Omx组件创建
- 基于C++的UKF代码示例,跟踪三次多项式曲线
- Win8初体验 内存/SSD硬盘性能挑Win7(一)
- 华为区块链白皮书(一)
- 不到最后,你永远不知道会发生什么
- 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
热门文章
- 林子雨教程中sqoop安装过程时区问题解决
- 第三方百度地图-----展示所在位置显示小圆点
- android 获取wifi连接不上,如何检测无法在android中连接wifi?
- Map集合、 HashMap集合、LinkedHashMap集合、Hashtable集合
- 【多场景建模】CIKM2021 阿里妈妈多场景CTR预估模型STAR 论文精读
- 线段与线段交点的求解
- easyexcel复杂模板导出(合并行列,列统计汇总)
- [树的直径 树形DP] UOJ #11【UTR #1】ydc的大树
- java引用另一个程序图像,java – 在Android应用程序上显示图像的另一种方法
- 全网最透彻的Hash分析