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 から編集して保存すると文字化けする可能性大。