2013-01-13 1 views
0

Кто-нибудь знает, возможно ли переопределить шаблон DisplayType для ContentType с использованием альтернативного шаблона URL? Например, можно ли переопределить шаблон: Content-Page.Detail.cshtml с Content-url-homepage-Page.Detail.cshtml? После немного поиграть, похоже, это не так. Кто-нибудь знает, возможно ли то, что я пытаюсь достичь?Шаблон переопределения деталей для типа содержимого с альтернативой URL в Orchard CMS

Спасибо!

+0

Почему вы все равно хотите сделать это? Содержимое, отображаемое на любом URL-адресе, будет отображаться либо в режиме 'detail', либо в режиме' summary', оно не может быть одинаковым для одного и того же URL-адреса. –

ответ

0

Вы можете просмотреть все доступные альтернативы для формы, включив функцию «Трассировка формы» и просмотрев список альтернатив, например. http://devhammer.net/blog/Customize-Orchard-CMS-with-Designer-Tools

Например, на основном элементе контента главной страницы я получаю из коробки:

~/Themes/MyTheme/Views/Content.cshtml 
~/Themes/MyTheme/Views/Content-url-homepage.cshtml 
~/Themes/MyTheme/Views/Content.Detail.cshtml 
~/Themes/MyTheme/Views/Content-Page.cshtml 
~/Themes/MyTheme/Views/Content-10.cshtml 
~/Themes/MyTheme/Views/Content-Page.Detail.cshtml 
~/Themes/MyTheme/Views/Content-10.Detail.cshtml 

ваших вариантов, чтобы добавить или расширить существующие альтернативные заводы, такие как Orchard.DesignerTools.Services.UrlAlternatesFactory например,

// appends [ShapeType]__url__[Url]_[DisplayType] alternates 
context.ShapeMetadata.Alternates = _urlAlternates.Value.Select(url => 
    context.ShapeMetadata.Type + "__url__" + url + "_" + 
     context.ShapeMetadata.DisplayType) 
     .Union(context.ShapeMetadata.Alternates) 
     .ToList(); 

Это даст вам альтернативный ~/Темы/MyTheme/Просмотров/Content-url-homepage.Detail.cshtml

или использовать один из существующих заместителей, таких как

~/Themes/MyTheme/Views/Content-10.Detail.cshtml 

Какой бы он ни был подойдет вашим целям (для меня использование идентификатора не так чисто, как с помощью URL)

Я также попытался настроить приоритет функции «Url Alt ernates, так что альтернативы url добавляются ко всем другим существующим альтернативам, как это было указано в коде, но, насколько я вижу, это не работает или не поддерживается.