背景

在之前,纸壳CMS的主题仅仅只是CSS样式,并不支持在主题下使用模板来构建不同的HTML结构。现在我们对主题功能做了增强,可以在主题下添加各自的模板,这样在制作主题时,就会更加自由。不仅如此,新的主题引擎还允许替换系统中所有Action对应的视图。

所以新的主题引擎可以修改包括后端在内的系统中的所有界面风格。

主题模板

纸壳CMS的所有组件、板块都有对应的默认模板。在制作主题的过程中,难免会遇到HTML结构不一至的情况,这时候就可以在对应的主题下添加显示模板来替换默认的模板。将组件的模板放入主题目录下的Views目录即可:

例如,如果覆盖文章列表模板,可以在Views目录下放入Widget.ArticleList.cshtml或者Widget.ArticleList.fluid,这样当选用该主题时,文章列表将会优先使用主题目录下的视图模板:

模板优先级

模板优先级最高的是主题目录下的模板,其次才是默认模板,查找模板的顺序如下:

  1. ~/{CurrentTheme}/Views/{Module}/{Controller}/{Action}
  2. ~/{CurrentTheme}/Views/{Controller}/{Action}
  3. ~/{CurrentTheme}/Views/{ViewName}
  4. 默认

{CurrentTheme}当前主题,{Module}路由中的定义值,例如后端所有页面的Module值为admin

所以主题模板不仅能替换组件的视图,还可以替换Action对应的视图。

我们对系统中的组件模板做了一些整理,可以使用以下链接下载包含所有默认组件模板的主题,可以使用Razor或者Fluid:

  • Razor
  • Fluid

注意事项

  1. 主题中仅包含需要修改的模板文件即可。
  2. 当把其它插件中的视图模板复制到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主题增强,支持主题中加入模板相关推荐

  1. 纸壳CMS现已支持自定义扩展字段

    简介 纸壳CMS是开源免费的可视化内容管理系统. GitHub https://github.com/SeriaWei/ZKEACMS 自定义字段 纸壳CMS现已支持自定义字段,在不修改代码的情况下, ...

  2. 纸壳cms支持php坏境吗,如何参与纸壳CMS开发以及贡献代码

    纸壳CMS是基于GPL v3.0开源协议开源的自由软件,可以免费使用它来做任何开源项目.同时也可以提交您的代码到官方仓库,让您的修改不被覆盖.比如你修改了一个已知的BUG,就可以将你的修改提交给主仓库 ...

  3. zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql

    纸壳CMS是基于ASP .Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. 方式一 直接运行以下命令即可在docker中运行纸 ...

  4. 纸壳CMS体验升级,快速创建页面,直接在页面中修改内容

    关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...

  5. 纸壳CMS(ZKEACMS)体验升级,快速创建页面,直接在页面中修改内容

    关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...

  6. 纸壳CMS 3.0升级.Net Core 2.1性能大提升

    微软发布了.Net Core 2.1正式版,纸壳CMS也在第一时间做了升级,并做了一系列的优化和调整,性能大幅提升,并解决了一些历史遗留问题,添加了一些新功能. Gitee https://gitee ...

  7. 纸壳CMS可视化建站系统搭建多语言网站

    纸壳CMS是可视化建站系统,现已经从架构上支持多语言.但是多语言功能默认是没有开启的.您可以从设置中开启多语言,或者随时关闭它,您可以随时进行切换. 开启多语言 如果您没有在系统设置中看到多语言设置菜 ...

  8. 纸壳CMS可视化建站系统创建多语言网站

    纸壳CMS是可视化建站系统,现已经从架构上支持多语言.但是多语言功能默认是没有开启的.您可以从设置中开启多语言,或者随时关闭它,您可以随时进行切换. 开启多语言 如果您没有在系统设置中看到多语言设置菜 ...

  9. 用Docker自动构建纸壳CMS

    纸壳CMS可以运行在Docker上,接下来看看如何自动构建纸壳CMS的Docker Image.我们希望的是在代码提交到GitHub以后,容器镜像服务可以自动构建Docker Image,构建好以后, ...

最新文章

  1. W7程序计算机面板介绍,win7系统隐藏任意程序运行界面的详细步骤
  2. POJ 1287 Prim算法模板
  3. 网购到火车票 浅析淘宝和12306网站架构
  4. 引导类加载器 Bootstrap ClassLoader
  5. 计算机网络(二十五)-IP数据报格式
  6. 计算机人文研究生专业,西安科技大学,艺术、人文、材料、计算机、通信等专业调剂信息...
  7. Office 2007打开提示The setup controller has encountered
  8. flutter实现画中国地图
  9. 如何使用光学检测汽车前仪表盘玻璃
  10. ENVI遥感处理(9):遥感影像镶嵌和图像裁剪
  11. 西部旅游杂志西部旅游杂志社西部旅游编辑部2022年第19期目录
  12. 高德地图样式主题设置
  13. python坦克大战
  14. C++笔记——第十一篇 多态 深入剖析
  15. Android多媒体框架(二)Codec初始化及Omx组件创建
  16. 基于C++的UKF代码示例,跟踪三次多项式曲线
  17. Win8初体验 内存/SSD硬盘性能挑Win7(一)
  18. 华为区块链白皮书(一)
  19. 不到最后,你永远不知道会发生什么
  20. 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!

热门文章

  1. 林子雨教程中sqoop安装过程时区问题解决
  2. 第三方百度地图-----展示所在位置显示小圆点
  3. android 获取wifi连接不上,如何检测无法在android中连接wifi?
  4. Map集合、 HashMap集合、LinkedHashMap集合、Hashtable集合
  5. 【多场景建模】CIKM2021 阿里妈妈多场景CTR预估模型STAR 论文精读
  6. 线段与线段交点的求解
  7. easyexcel复杂模板导出(合并行列,列统计汇总)
  8. [树的直径 树形DP] UOJ #11【UTR #1】ydc的大树
  9. java引用另一个程序图像,java – 在Android应用程序上显示图像的另一种方法
  10. 全网最透彻的Hash分析