すべてのコンテンツ タイプに TitlePart が添付されているわけではありません。ダッシュボードでこれを確認し、コンテンツ タイプに実際にタイトル パーツが添付されているかどうかを確認できます。たとえば、ページ コンテンツ タイプは次のようになります。
コードでは、コンテンツ アイテムにタイトル部分があるかどうかを次のように確認できます。
var query = Services.ContentManager.Query("SideBarLinks").List();
foreach (var sideBarLinks in query) {
// Cast to TitlePart
var titlePart = sideBarLinks.As<TitlePart>();
var title = titlePart != null ? titlePart.Title : string.Empty;
// Or:
// var title = sideBarLinks.Has<TitlePart>() ? sideBarLinks.As<TitlePart>().Title : string.Empty;
}
コンテンツ アイテムの表示テキストを取得する最も安全で推奨される方法は、アイテム メタデータを使用することです。
var query = Services.ContentManager.Query("SideBarLinks").List();
foreach (var sideBarLinks in query) {
// Get display text of the item
var title = Services.ContentManager.GetItemMetadata(sideBarLinks).DisplayText;
}
これには複数の利点があります。最初の 1 つは、タイトル部分をチェックする必要がないことです。メソッド自体がそれを処理します。もう 1 つの利点は、タイトルとして表示するものをオーバーライドできることです。映画のコンテンツ タイプがあり、タイトルを「映画のタイトル (2001)」と表示したいとします。あとは、カスタム パーツに ITitleAspect を実装するだけです。
public class MoviePart : ContentPart<MoviePartRecord>, ITitleAspect {
// Shortcut to get the title
public string MovieTitle {
get { return this.As<TitlePart>().Title }
}
public int ReleaseYear {
get { return Retrieve(x => x.ReleaseYear); }
set { Store(x => x.ReleaseYear, value); }
}
// other properties
// Implement Title from ITitleAspect
public string Title {
get { return string.Format("{0} ({1})", MovieTitle, ReleaseYear); }
}
}
このGetItemMetadata(theMovie).DisplayText
アイテムの は、書式設定されたタイトルを返します。