创建自己的主题(theme)

写一个新的主题

This topic was updated for the Orchard 1.0 release.

一个Orchard主题定义了一个应用程序的显示通常用来订制一个Orchard网站的个性化显示。一个主题可以通过模块重写样式表,图片,层或者内容模板。另外,一个主题可以包含重写代码。

这篇文章将显示如何创建一个主题和主题开发的简介

为了不盲目下手,我们可以先尝试通过在现有主题上的更改来实现创建一个新的主题。Orchard提供了一个叫做"TheThemeMachine"的主题。它可以很容易的被用作父主题。想了解更多关于使用父主题的信息可以参见Customizing the Default Theme.

生成一个新的主题

你需要先下载并安装Code Generation才可以使用代码生成工具。这个工具通常是默认安装的,想知道更多关于Command-line code generation的信息可以查看Command-line code generation.

想要通过代码生成工具生成一个新主题的代码结构你需要打开 Orchard command-line 工具。然后输入以下命令:

codegen theme MyFirstTheme 

codegen 命令将会创建主题的代码结构并且给这个主题命名为 MyFirstTheme.代码生成工具将生成一下文件夹。

theme_structure.PNG

创建的文件只有 Theme.txt 和 Views\Web.config Theme.txt 是这个主题的清单。Web.config 是一个配置文件供ASP.NET MVC 渲染视图用。 你基本上不需要修改这些配置文件。

创建主题的样式

在 Styles文件夹中,创建一个名称为Site.css的文件. (你也可以取任何其他的名字,只要扩展名为.css)

下面的例子展示了一个样式表。想得到关于这个样式表的更多结构信息清参见 UI Guidelines for Theme Authors.

/*
Theme: My First Theme
Author: 
Copyright: 
*/

/* Colors Palette
Background: #d3d3d3
Text: #000
Main Accent: #999
Links: #c03
*/

/* Reset
***************************************************************/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline;                                       
}
 
header, footer, aside, nav, article { display: block; }

/* Clearing Float
***************************************************************/
group:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
                        
.group {display: inline-block;}  /* for IE/Mac */

/* General
***************************************************************/
body {
    font: normal 100% Segoe UI,Trebuchet,Arial,Sans-Serif;
    height: 100%;
    text-align:left;
    color:#000;
    background: #d3d3d3;
}


/* Headings */
h1,h2,h3,h4,h5,h6,legend {font-weight:normal; font-style: normal;}

h1 {font-size: 160%;}
h2 {font-size: 145%;}
h3 {font-size: 130%;}
h4 {font-size: 120%;}
h5 {font-size: 105%;}

p           { margin: 0 0 1em; line-height: 1.538em; }
p img.left  { float: left; margin: 0.923em 0.923em 0.923em 0; padding: 0; }
p img.right { float: right; margin: 0.923em 0 0.923em 0.923em; }
    
a:focus, 
a:hover     { text-decoration: underline; }
a           { color: #c03; text-decoration: none; }

#header {
    background:#000;
    color: #000;
    width:100%;
    height:50px;
    margin-bottom:40px;
}

#branding h1{
    font-size: 140%;
    color:#fff;
    padding:8px 0 0 40px;
}
   
/* Structure
***************************************************************/
#layout-navigation 
{
    width: 960px;
    margin: 0 auto;
    display: block;
    border-bottom: 1px solid #dbdbdb;
}
                    
nav ul 
{
    padding: 0px;
    margin: 0px;
}
    nav ul li
    {
        border:1px solid #dbdbdb;
        background:#f6f6f6;
        display:block;
        float:left;
        margin:0 2px -1px 0;
    }
    nav ul li.current 
    {
        border-bottom: 1px solid #fff;
        background:#fff;
    }
    nav ul a 
    {
        padding:0 18px;
        display:block;
        float:left;
        color: #333;
        font-size: 1.077em;
        text-decoration:none;
        line-height:24px;
    }
                                                                                                                                                                            
/* Main
***************************************************************/
#main {
    margin:0 auto 40px;
    width:600px;
}

/* Secondary
***************************************************************/

/* Forms
***************************************************************/

/* Misc
***************************************************************/

为你的主题创建一个布局

在Views文件夹中,添加一个布局文件 (Layout.cshtml) 并且添加如下代码:

@{
    Script.Require("ShapesBase");
    Style.Include("site.css");
}

<div id="header">
    <div id="branding">
        <h1>@T("Welcome to the Playground")</h1>
    </div>
</div>
<div id="layout-navigation" class="group">
    @Display(Model.Navigation)
</div>
<div id="main">
@Display(Model.Content)
</div>

这个文件定义了基本生成网页的基本结构。想获取更多有关布局文件的信息请参见 Template Files and their Locations.

添加一个主题图片

你可以提供一个缩图图片代表你的新主题。它将显示在 Admin Panel中。 图片文件必须叫做Theme.png 并且它必须被放置在主题的根目录下。这样这个缩略图将能代表我们新建的主题。

NewTheme2_thumbnail.png

提交新建的主题

要提交一个新的主题, 在 Dashboard中,点击 Themes. 在 Available下,选择新主题并且点击 Set Current.

themes_newThemeImage_675.png

Manage Themes 管理页面将重新显示 MyFirstTheme 作为当前主题页。

ok,现在你可以看看你的新主题的样子了。


翻译仅供学习之用,如有缺漏请不吝指正。鉴于能力有限定有诸多曲解或不完整的地方,请海涵。

个人blog地址:http://www.cnblogs.com/falcon-fei/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,566评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 一连几天阴雨,按说夏天,应该喜欢凉爽,可风一刮,有点冷,象骨缝里有风的感觉。总希望雨会停,风不在吹,不是别的什么,...
    悲伤时下雪阅读 405评论 2 5
  • 大众饮品黑咖啡 去越南旅游的人如果有一个心愿单的话,那么上面一定有喝一杯滴漏咖啡。滴漏式咖啡是法国殖民时期留下的最...
    蔓延022阅读 259评论 0 0
  • 我可能是第四期读写班的NO.one了,当然是指年龄。掐指算来已经工作31年了,虽然工作顺利,平平稳稳,但回顾来路...
    fieldsky阅读 160评论 0 0