Umbraco 7 Note 1
Umbraco についてです。メモとして描いていたので内容は部分的です。
Umbraco で登場する用語
- Dashboards
http://hoge/umbraco
でアクセスできる管理画面
- Umbraco API
- Version 6 から登場した Umbarco のデータを操作できる API
- Back Office
- Umbraco の構成要素
Back Office
C# で例えると、Document Type : クラス、Content : クラスから作成したインスタンス、Properies : クラスがもつ Property、Data Type : Property の型、Property Editors : Property の型の構造(string, int, Custom Class の中身の実装)。Umbraco でサイトを作成するには、Document Type を定義し、Properties を定義し、Content を作成してページを作る。
- Document Type
- ページの構造。
- 例: Blog という Document Type は、 Title, BodyText, PublishDate, という Properties を持つ。
- Content
- ページ。
- 例: Document Type の "Blog" から 2011/11/10 の記事 を作成する。(= Content を 1 つ作成した)
- 例: Document Type の "Blog" から 2011/11/30 の記事 を作成する。(= Content を 1 つ作成した)
- Properties
- Data Type
- Property Editors
- Media Type
- Media
- Member Type
- Member
- Node
- User
- Macros
- Macro Parameter Editor
- Templates/Layouts/Masterpages
- Packages
参照
未分類
Document Type
Document Type は継承することができる。この Document Type の継承は、"Property" や "Tab" を継承したい(同じ構造を持たせたい) 、という目的の時に使用する。とあるページがとあるページの下に配置されるからといって、Document Type を継承しなければいけない、ということではない。 (http://hoge/blog の下に http://hoge/blog/entry というページを配置する場合、必ずしも entry の Document Type は blog の Document Type を継承しなければいけない、ということではない。)
Document Type Compositions
Umbraco 7.2 から追加された機能。Document Type を複数継承することができるようになった。
今までは、継承する Document Type は一つしか選択できず、また継承元を変更することもできなかった。Document Type Compositions により複数の Document Type を継承元として選択できるようになり、変更も可能になった。
例えば、複数の Document Type に "Meta Keyword" という Property を持たせたい場合は、"SEO" という Document Type を作成して "Meta Keyword" という Property を持たせる。そして、例えばページという Document Type にて Document Type Compositions で "SEO" にチェックを入れる。そうすると、ページの Document Type に "Meta Keyword" という Property を持たせることができる。そして、ページは、他の Document Type も継承することができるので、気軽に Document Type を小さくまとめて定義できる。
なお、Dashboards の Document Type では、今まで通りのツリー構造で表示される。
Alt Template
実際に選択している Template とは別のテンプレートを適用して表示することができる機能。URL に ?alttemplate=hoge
(
hoge に Template の Alias) を付けて表示することができる。
注意として、意図しないページを表示させたり、余計なエラーを発生することになる。
この機能を禁止する場合は、 config/umbracoSettings.config の disableAlternativeTemplates に false を設定する。
<web.routing
trySkipIisCustomErrors="false"
internalRedirectPreservesTemplate="false" disableAlternativeTemplates="true">
</web.routing>
Custom Error Page
Custom Error ページの Content を用意する config/umbracoSettings.config にて、Content Id を設定
<errors>
<error404>1732</error404>
</errors>
Web.config の system.webserver に
<httpErrors existingResponse="PassThrough"/>
ASP.NET の通常のエラー設定も必要に応じて。
<customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx"/>
Umbraco で Macro を使う
概要
Macro は Razor, XSLT, usercontrol で書くことができる。(Umbraco 7 では、usercontrol はあまり使われないと思われる。)
Parameter も設定可能。
Macro の入力用ヘルパーあり(Rich Text Editor にも付属)。
用途
ユーザーが任意の場所に、動的な要素を埋め込みたい時に使用する。
例えば、本文中にとある手順について書くとする。この手順は、あちこちの記事で表示する可能性があり、機能がリリースされるたびに更新が必要となる。
例:Azure Websites と ASP.NET を使用する の "このチュートリアルを完了するには、Azure アカウントが必要です。" の部分。
Macro を使用しない場合は、リリースの度に複数の記事を修正しなければいけない。Razor で @Html.Partial("hoge")
と書きたいところだが、ユーザーが管理画面の入力欄で任意の場所に配置できるようにしたい。そこで Macro を使う。
手順
- Partial View Macro Files を作成する。
- Back Office > Developer > Partial View Macro Files
このとき、 .cshtml は @inherits Umbraco.Web.Macros.PartialViewMacroPage と、継承する。
- Macro を作成する。
- Back Office > Deceloper > Macros
- Macro を配置する。方法は 2 つ。
◇方法1
ユーザーが Macro を配置したい場所にて以下のコードを書く。パラメータがある場合は、属性とその値も追加する。
<div><?UMBRACO_MACRO macroAlias="{ Macro の 名前}}" /></div>
開発者は、.cshtml 側で以下のコードを記述し、Macro をレンダリングさせる。
string afterRender = umbraco.library.RenderMacroContent(string Text, int PageId(Model.Content.Id)等);
◇方法2
入力フィールドがリッチテキストの場合は、ユーザーが 入力用ヘルパーから配置する。
Bug
- Partial View Macro Files が文字化けする場合がある。
- 改行文字の混合が原因?
- Visual Studio から、ファイル>名前を付けて ... を保存>エンコード付きで保存>改行文字 でファイルを保存し直すと直る。
- Back Office から編集して保存すると文字化けする可能性大。