Оболочка для пользовательской части контента - Orchard CMS - PullRequest
3 голосов
/ 06 мая 2011

Используя администратора Orchard, я создал новую часть контента под названием 'Spotlight Wrapper' с 3 полями HTML. Затем я создал тип контента под названием «Шаблон 1» и присвоил ему «Spotlight Wrapper» . Затем я создал новый элемент контента «Шаблон 1» под названием «Домашняя страница». Затем я создал файл с именем Fileds_Contrib.Html-Spotlight Wrapper.cshtml, чтобы обернуть каждое поле HTML в «Spotlight Wrapper» и это работает. Я сейчас добавил:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=Parts_SpotlightWrapper" />

И создано:

Views\Parts.SpotlightWrapper.cshtml

в попытке обернуть всю контентную часть «Spotlight Wrapper» в, но не получается заставить ее работать?

1 Ответ

2 голосов
/ 11 мая 2011

Вы объявили обертку, которая, я думаю, приведет к циклической ссылке, поскольку вы пытаетесь обернуть фигуру Parts_SpotlightWrapper в себя. Оболочки - это просто отдельные фрагменты кода Razor (cshtml), которые выступают в качестве родителя для данной фигуры.

Чтобы добиться желаемого поведения, вы должны создать отдельный файл .cshtml (например, MyWrapper.cshtml), содержащий необходимый HTML-код оболочки, и прикрепить его к существующей части следующим образом:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=MyWrapper" />

Код оболочки может выглядеть, например. как это:

<ul>
    @Display(Model.Child)
</ul>

Кстати - попробуйте посмотреть, как это делается в Orchard.Widgets . Существует две оболочки Widget.Wrapper и Widget.ControlWrapper , которые обертывают форму Widget . Их объявления не находятся внутри файла Placement.info (как вы это сделали), а жестко запрограммированы в определении формы Shapes.cs , хотя конечный эффект совершенно одинаков. Техника с Placement.info была представлена ​​позже как ярлык.

НТН

...