纸壳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/ ...
随机推荐
- ApplicationContext(九)初始化非延迟的 bean
ApplicationContext(九)初始化非延迟的 bean 此至,ApplicationContext 已经完成了全部的准备工作,开始初始化剩余的 bean 了(第 11 步). public ...
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)
Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...
- Eclipse编辑XML自动提示(zz)
Eclipse编辑XML自动提示 博客分类: j2se XMLEclipseiBATISSpringSQL IED Eclipse Java EE IDE for Web Developers: D ...
- RNA-Seq数据去接头(Adapter)
1.adapter是一段短的序列已知的核酸链,用于链接序列未知的目标测序片段. 2.barcode,也称为index,是一段很短的寡居核酸链,用于在多个样品混合测序时,标记不同的样品. 3.inser ...
- AJAX-php-json数组
1.在php中有个数组,响应回前端 $array=["习大大","川普","金三胖"];2.JS对象数据格式 ex: 数组: var TOM ...
- sticky footer 布局
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- Svn项目管理工具
1 svn介绍 1.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解 ...
- 693. Binary Number with Alternating Bits
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- 查看MySQL语句变量了多少行数据
explain MySQL语句 列如 explain SELECT * FROM 表名 WHERE id=1;
- java 判断对象是否是某个类的类型两种方法
第一种: instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: resul ...