Orchard基本概念


本文鏈接:http://www.cnblogs.com/souther/p/4531273.html

Orchard是個CMS(這不是廢話么),它的首要目標是幫助你從現有的碎片建設網站。這些碎片大小不一、形狀迥異,如果你想高效地利用它們,那你首先得很好的理解它們。本文將對深入解釋這些碎片的名稱與功能。

常規CMS定義


內容(content)

CMS中的C就是指的內容,這也就是說CMS管理的任何東西都是內容。更准確地說,擁有任何信息的站點中的每一個東西都是內容。例如,一篇博客,一個評論,一個產品甚至導航菜單或者可識別的公司Logo,各處的內容。所以正確的想法是內容是站點的所有一切。現在你可能越來越糊塗了。接下的章節我們將搞清楚不同各類內容之間明顯的區別。

管理界面、控制台或后台

管理界面(有時也叫控制台(dashboard,有人叫儀表盤,隨便吧,大家知道是什么東西就行)或后台),這東西大家都知道用來管理網站和網站內容的地方。這里只有授權“Access admin panel”用戶可以訪問。這就是CMS中的M。

CMS

CMS中的S指的是“system”,即系統,它其實不像它看上去那樣膚淺無用。其實它很重要,CMS管理內容必須以系統的方法:這也就是說所有內容都是資源的交互與統一管理。

例如,你可以使用常規工具管理博客文章,頁面以及產品,而這些東西使用常用模塊就都可以評論、評級或標記。這會讓你感覺體驗一致且便於創建新的內容類型。

前端(Front-end)(譯者:其實與它的反義詞back-end來說翻譯成前台也可以,因為把back-end翻譯成后端感覺怪怪的,我們一般都說后台吧)

前端是定期匿名用戶訪問的網站部分。換句話說,就是網站除了管理界面之外呈現給公眾的所有東西。

(譯者:上句話其實說不說沒有什么意義,來到此的人都知道前端的概念,越說越不懂。)

安裝(Setup)

安裝環節是必不可少的,否則你連站點也看不見更不用說其它的了(比如安裝完就可以創建內容了)。

Orchard概念(前邊的部分都是為講概念的,下邊才真正進入主題)


內容條目

一個內容條目就是一條簡單的內容,一般與一個鏈接相關聯。像頁面、博客文章或產品都是內容條目。

內容類型

內容條目是內容類型的實例。換句話說,內容類型是內容條目的類。上邊曾說過的頁面,博客文章,產品,其實它們被描述成三個內容類型:page、blog post和product。也就是說我們訪問一篇博客其實就是類型blog post的一個條目。(譯者:其實這段看英文可能比中文更好理解,其實他要說明的意思就是內容類型與條目的關系,類似於我們面向對象中,類與類的實例之間的關系 一樣。)

內容部件

在Orchard中,內容類型由更小的部分組成,通常叫做內容部件。內容部件是內容的原子單位,用這些部件足以實現一個特定的功能並且內容類型也可以交互重用它們。

A blog post is made from parts.

例如,評論、標記和評級都是內容部件,因為它們的特定功能,所以可以被內容類型所重用。博客的評論往往不需要給定內容類型。評論在博客中的使用和在頁面與產品中基本一樣。

在實際作用中,給定的內容類型也只能出現一次(大概是說一內容類型的實例化在一個頁面中只能有一個吧)。

內容字段

內容字段是可以被添加到內容類型中的多類信息(大家把它理解成類中的字段即可)。內容字段有名稱、類型以及具體屬於一個內容類型。任意給定的內容類型都有可能有幾個字段類型。(不懂意思?看下邊的例如)

例如,一個產品內容類型有一個文本字段表示它的庫存,一個數值字段表示價格,另外一個數值字段表示重量。這些字段中的每一個都可能只對一個產品有意義。意思是你有你的庫存,我有我的價格,互不影響。

注:這就有可能在我們創建有三個屬性的產品部件時,大致等同於創建這些字段的一個集合。這樣做可以將任何的內容類型轉換成一個產品。對於Orchard來說用哪種方法都可以(好像只說了一種?大致意思是條條道路通羅馬,只要可以用,怎么搞都可以)。

模塊(Module)

Orchard可以創建各種用戶擴展,它們其實都是以模塊的方式存在。對於Orchard來說一個模塊就是一系列擴展,在網站目錄下我們可以看到一個模塊目錄子文件夾,模塊在這里被分組存放。

在Orchard的資源庫中可以看到許多可選的模塊(在英文文檔的菜單上有個Gallery,就是這里,可以進去看看)。

The Module management screen

特性(Feature)

一個模塊可以有一個也可以有多個特性,特性其實就是一組功能的邏輯組合,可以單獨開啟或關閉。例如,一個用戶授權模塊可以有如下特性:OpenID,FackBook,LiveID, Twitter or Google授權等,它們都可以被打開或關掉。

特性也可以依賴其它特性,無論它們是不是在一個模塊中。

The feature management screen

描述清單(Manifest)

清單是一個文本文件,主要用於給系統描述一個模塊或一個主題。下面是個例子:

Name: Comments
AntiForgery: enabled
Author: The Orchard Team
Website: http://orchardproject.net
Version: 1.8.1
OrchardVersion: 1.8
Description: The comments system implemented by this module can be applied to arbitrary Orchard content types, such as blogs and pages. It includes comment validation and spam protection through the Akismet service.
Features:
Orchard.Comments:
    Name: Comments
    Description: Standard content item comments.
    Dependencies: Settings, Orchard.Tokens
    Category: Social
Orchard.Comments.Workflows:
    Name: Comments Workflows Activities
    Description: Provides workflow activities for comments management.
    Category: Workflows
    Dependencies: Orchard.Workflows

用戶界面組合(UI composition)


Orchard中的內容都是由一些部件組合成的。當我們考慮內容的組合時這就需要一個機制來編排顯示。這也是我們討論用戶界面組合的原因,像基礎位及內容都需要組合成一個有機的整體。有幾個概念都是關於用戶界面組合的,下邊的這幾個。

翻譯到此處時吐血,休息一會再往下吧。

主題

在我們設計網站的時候,能夠可視化的修改網站的各個方面是很重要的。Orchard中內容管理與內容的可視化渲染有明顯的區別。

主題是為網站包裝好的皮膚。它由樣式表、圖片、布局、模板甚至自定義的代碼等組成。甚至也可以從一個主題繼承自另一個主題,如果你想對現存的主題做一個小修改的話,這樣是非常有意義的。

The same site can be displayed differently by switching themes.

布局

布局是主題中的一個文件,布局定義了網站頁面的一般結構。布局所定義的一系列區域中都可以插入內容或部件。

The layout for the theme machine, with its various collapsible zones

模板

網站中的數據需要轉換到form中對於用戶來說才是可讀的,而且每塊內容部分、每個字段及每個部件都需要在前台可視化的展示。(呵呵,不然怎么看,總不能看數據表啊)。一套模板其實就是格式化數據與轉換數據為瀏覽器可顯示的HMTL的一套方案(配方?大致這個意思)。你可以理解成模板就是給數據預定義好角色的清晰的HTML框架(說了半天還是模板 的意思)。

這有一個例子是一個顯示路由部分標題的模板:

<h1>@Model.Title</h1>

形狀
在用模板顯示東西(頁面元素)之前,這些東西都得轉換成一個形狀,這個形狀是一個非常易於延伸的對象,它包含顯示所需要的各種信息。在我們通過模板渲染之前,每個東西都得映射成形狀樹,而這些形狀樹就是最終頁面內容的有序抽象。這樣一些形狀樹的好處是任何模塊都能修改已有形狀或創建新的形狀。

布局、區域、部件和內容部分都能表示成渲染過程中的一部分形狀。

又看不懂吧,看例如吧

例如,有人可能想搞個頭像模塊來添加頭像圖標形狀到評論形狀,而這些評論形狀是通過評論模塊創建的。同樣的方法,部件模塊的層可以添加部件形狀到布局形狀的區域形狀。

還是不懂?實際用用再來理解吧

定位、放置

當我們渲染組成頁面或內容條目的部件與字段的集合或其它形狀時,Orchard需要知道按什么樣的順序來處理。Placement.info是一些XML文件,這些文件描述了什么形狀該顯示、顯示到什么區域中、什么順序等規則。這就使得我們能夠自定義化渲染每個形狀,也能調整它們的渲染順序。

區域

區域是布局中比較特別的部分,可以通過插入部件的方式來定制。在有的主題中,區域是可折疊的,這就意味着它們可以隱藏掉如果它們被包含在未激活的部件中時。

部件

一個部件是用戶界面中的一小部分,它能夠被添加到網站的部分或所有頁面中。部件的常見例子有標簽雲,地圖,歸檔,搜索表單,或最近的博客等。

A few widgets

一個層是一組被特定規則激活的部件(包括它們的配置,包括它們定位區域名和順序)。

例如,主頁層被特定選擇了主頁的規則激活。默認層總是激活的不管顯示的是哪個頁面。授權層僅僅是在用戶確認是它們自己時激活。

當一個頁面上激活的層超過一個時,所有層的所有部件會同時顯示。Orchard序列化了它們基於它們的位置字符串。

安全


用戶和角色

在Orchard中,用戶可以分配角色,也就是用戶的能干啥。權限可以分配給角色用來定義網站中誰能干什么(更多細節請參照下一節)。任何一個用戶都可以有一個或多個角色。

這段其實就是說用戶與角色的,搞開發估計都知道它的作用。

網站的管理者也能創建他們自己的角色,但是Orchard提及的內置角色應該滿足大多數的網站需求:

  • 管理員:對網站設置與內容有完整的控制權。
  • 編輯:不創建內容但是可以編輯和發布被作者創建的內容。
  • 版主:驗證用戶創建的內容,比如評論。
  • 作者:撰寫或發布他自己的內容。
  • 投稿人:可寫內容但不一定有權限發布。
  • 匿名用戶:未知用戶,凡是沒登錄的都算。
  • 授權用戶:登錄了的都是。(也就是能登錄那肯定是有賬戶的)

匿名或者授權都不能手動分配給一個用戶,而是在運行時動態決定的。

特權與權限

在Orchard中所有的用戶都沒有相同的權利與特權:管理員能選擇誰能創建內容,誰能寫或者驗證評論等等。權利和特權表示的就是權限。在Orchard中,權限被授予角色但不是明確拒絕的。換句話說,假如一個用戶屬於某一類角色有什么樣的權限,他就有什么權限。要想刪除一個權限,要么刪除擁有此權限角色的用戶,要么刪掉整個角色的權限。

有些權限是“隱含授予(effectively其實是有效或實際,但是從上下文中我覺得隱含授予更妥當)”。這就是說,權限沒有被明確的授予,但是被另一個授權隱含。例如,如果你授予網站管理員權,那就意味着你隱含授予了其它所有權限。(也就是說給了一個人管理員,那么其它的權限就都有了,老外有時說話就是磨機,一個意思說來說去,就是害怕你不懂)。

模塊定義權限,也就給內置角色默認設置。就是說如果你建了自己的模塊,你就可以給它指定特殊權限。

網站管理員

網站管理員有時也叫超級管理員,這貨一般在安裝的時候就定義好了而且有所有權限。如果你有權限也可以對管理員的設置進行修改。

有個叫“管理員權限”的權限,這個權限默認授予管理角色中的成員。我們建議不要輕易給別人管理員權限。

開發


這一節我們主要說說模塊開發者需要知道的概念。

ASP.NET MVC

Orchard用的是ASP.NET MVC 框架,這誰不知道呀。

Handler

可以叫處理程序,它類似於MVC中的過濾器,它可包含代碼執行請求生命周期的特定事件。它們往往用來安裝數據庫或者在其它東西導入時做些額外的操作。(呵呵,感覺它解釋的我都不知道這貨是干什么的了,這東西大家都用過也知道是干啥的,不用非要用它的解釋

Driver

Drivers類似於MVC的控制器,但Drivers工作在內容部分的層次而不是所有請求的層次。它們往往從管理編輯器來為渲染和執行后台程序准備形狀。其實說了半天就是控制器的作用。只不過更小了。

Record

一個記錄是一個類,它模型化了內容部分的數據庫表示。就是說給內容部分建立了一個模型類,它們是POCO(簡單傳統CLR對象),這里邊的屬性必須是虛擬的。

Model

模型其實就是內容部分的類。在強類型類的表單中或者 更復雜的動態形狀中,有些部分定義了視圖模型。

Migration

遷移就是當首次安裝一個特性或升級它時執行的操作。遷移可以平滑的升級個性特性而不丟失數據。Orchard有一個數據遷移框架。

Injection

控制反轉,或者注入,Orchard中用的都比較多。當其它代碼需要一個依賴時,它往往就需要注入或者幾個特定接口的實例。這個框架在運行時將負責選擇,實例化和注入的正確實現。

 

譯者:翻完這篇后感覺說明文檔中有些話其實有點多余,但是又不好理解,所以大家在看的時候,知道這個東西意思就行,不用咬文嚼字,非要搞懂每一句意思,而且有的感覺中文的話沒有英文的好理解,所以最好中英文對照的看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM