2015-11-06 1 views
0

Я использую Orchard v.1.9.2.0. Я создал собственное определение содержимого под названием Event. Вот снимок экрана из полей и частей, которые я создал для него:Orchard CMS - Пользовательский тип содержимого и полный контроль над каждым полем на переднем конце

enter image description here

Мой вопрос ... Я хочу, чтобы иметь возможность контролировать расположение «Event Detail Page», так что я могу поставить каждое из этих полей именно там, где я хочу их разместить.

Прямо сейчас, по умолчанию, Content.cshtml имеет @Display(Model.Content) и самостоятельно выписывает все эти поля на страницу.

Я думал, что могу добиться этого с помощью функции «Макеты», но я не вижу эти новые поля в редакторе макетов. Теперь я думаю, могу ли я просто отобразить каждое из этих полей непосредственно в content.cshtml?

Например, в моем настраиваемом типе контента у меня есть поле под названием Event Logo, я попытался использовать @Display(Model.Content.EventPage.EventLogo), однако все, что он делает, это Orchard.MediaLibrary.Fields.MediaLibraryPickerField в текстовом виде в браузере.

ответ

0

Странно, что при создании/редактировании страницы событий поля должны быть в панели инструментов (если вы создаете макет, то поля не отображаются в панели инструментов).

Использование полей в макете, если вы используете значения полей (или планируете использовать их) в разных местах (сводный вид, проекция). В противном случае будет проще использовать элементы макета (например, html, изображение, абзац и т. Д.).

Если у вас есть определенная структура страницы, в которой используются только эти поля. Возможно, проще настроить позиции через place.info (что у вас будет возможность изменить структуру для всей страницы событий в одном месте, а менеджеры контента будут избавлены от создания правильной структуры страницы).

Вы можете включать поля в любой локальной зоне через placement.info

<Match ContentType="EventPage"> 
<Match DisplayType="Detail"> 
    <Place Fields_Common_Text-LatestNew="LatestNewsAndRaceResultLocalZoneName:1" 
     Fields_Common_Text-RaceResults="LatestNewsAndRaceResultLocalZoneName:2" 
     Fields_MediaLibraryPicker-EventLogo="OtherLocalZoneName:1" 
     /> 
</Match> 
</Match> 

, а затем создать альтернативный Content-EventPage.Detail.cshtml (путем копирования и переименования Content.cshtml). Наконец внутри Content-EventPage.Detail.cshtml вы можете использовать

@Display(Model.LatestNewsAndRaceResultLocalZoneName) 
@Display(Model.OtherLocalZoneName) 
+0

Я попытаюсь это позже и посмотреть, если это работает для меня, спасибо. Я не был уверен, как использовать placement.info, поэтому спасибо за руководство мной – EdwardM

Смежные вопросы