纸壳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:
注意事项
- 主题中仅包含需要修改的模板文件即可。
- 当把其它插件中的视图模板复制到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
纸壳CMS主题增强,支持主题中加入模板的更多相关文章
- 使用VS Code开发纸壳CMS自动编译主题压缩CSS,JS
Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持语法高亮.智能代码补全.自定义热键.括号匹配.代码片段.代码对比 Diff.GI ...
- 纸壳CMS现已支持自定义扩展字段
简介 纸壳CMS是开源免费的可视化内容管理系统. GitHub https://github.com/SeriaWei/ZKEACMS 自定义字段 纸壳CMS现已支持自定义字段,在不修改代码的情况下, ...
- 在Docker中运行纸壳CMS并配置使用MySql
纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/ ...
- 纸壳CMS(ZKEACMS)体验升级,快速创建页面,直接在页面中修改内容
关于纸壳CMS 纸壳CMS又名 ZKEACMS Core 是ZKEACMS的 .net core 版本,可运行在 .net core 1.1 平台上.是一个开源的CMS. 纸壳CMS对于 ZKEACM ...
- 使用vs code开发纸壳CMS并启用Razor智能提示
关于纸壳CMS 纸壳CMS是一个开源免费的,可视化设计,在线编辑的内容管理系统.基于ASP .Net Core开发,插件式设计: 下载代码 GitHub:https://github.com/Seri ...
- 纸壳CMS可视化建站系统搭建多语言网站
纸壳CMS是可视化建站系统,现已经从架构上支持多语言.但是多语言功能默认是没有开启的.您可以从设置中开启多语言,或者随时关闭它,您可以随时进行切换. 开启多语言 如果您没有在系统设置中看到多语言设置菜 ...
- 纸壳CMS 3.0升级.Net Core 2.1性能大提升
微软发布了.Net Core 2.1正式版,纸壳CMS也在第一时间做了升级,并做了一系列的优化和调整,性能大幅提升,并解决了一些历史遗留问题,添加了一些新功能. Github https://gith ...
- 纸壳CMS替换默认实现
简介 纸壳CMS是一个开源免费的可视化内容管理建站系统,拖拽就可以轻松建网站. GitHub: http://github.com/SeriaWei/ZKEACMS 纸壳CMS在设计上使用的是ASP. ...
- ASP .Net Core路由(Route) - 纸壳CMS的关键
关于纸壳CMS 纸壳CMS是一个开源免费的,可视化设计,在线编辑的内容管理系统.基于ASP .Net Core开发,插件式设计: GitHub:https://github.com/SeriaWei/ ...
随机推荐
- 摹客 iDoc 12月上半月新功能点评
转眼就到了2018年的最后一个月,小伙伴们是不是都在奋力拼搏做年底的冲刺呢?摹客也没有放慢脚步,不断地优化,给大家带来一个又一个的惊喜.那么,让小摹来带大家看看12月摹客iDoc更新了哪些特色功能: ...
- angular2在双向数据绑定时[(ngModel)]无法使用的问题
angular2在双向数据绑定时[(ngModel)]无法使用,出现的错误是: Can't bind to 'ngModel' since it isn't a known property of ' ...
- nginx xxx.conf
server { listen 80 ; server_name xxx.test.cn localhost 127.0.0.1 115.29.96.222; access_log /var/log/ ...
- 高性能Java RPC框架Dubbo与zookeeper的使用
https://blog.csdn.net/qq_38982845/article/details/83795295
- Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path(字典序)
https://codeforces.com/contest/1072/problem/D 题意 给你一个n*n充满小写字母的矩阵,你可以更改任意k个格子的字符,然后输出字典序最小的从[1,1]到[n ...
- dj django与ajax交互
Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数 ...
- 二级缓存EhCache在几种应用技术的配置方法和步骤总结
一:Spring和Ehcache缓存集成 业务问题:如果仓库不经常变动,大量进出库,总是需要查询仓库列表 (列表重复) ,使用缓存优化 ! 阅读spring规范29章节 第一步: 导入ehcache的 ...
- java项目显示红叉,程序却没有错误
转 http://blog.sina.com.cn/s/blog_825b7d7c0102w7rq.html (2016-07-02 11:38:38) 分类: javaWeb 电脑换了不同版本的 ...
- oss+上传文件夹
最近公司做工程项目,实现文件夹云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的文件夹传输功能做出分析,怎么实现文件夹上传的,如 ...
- 强制DataNode向NameNode上报blocks
正常情况下,什么时候上报blocks,是由NameNode通过回复心跳响应的方式触发的. 一次机房搬迁中,原机房hadoop版本为2.7.2,新机房版本为2.8.0,采用先扩容再缩容的方式搬迁.由于新 ...