WedX - журнал о программировании и компьютерных науках

Тематика пользовательской зоны

Я создаю сайт Orchard с темой, созданной художником-графиком, который ничего не знает об Orchard. Подключить это довольно просто, однако то, как он его построил, предлагало конечному пользователю несколько различных вариантов, которые я пытаюсь воспроизвести, желательно без создания специального модуля. Он построил шаблон так, что включил четыре разных типа макета: 50/50, 33/67, 67/33 и 100% (этот вариант работает благодаря Model.Content).

Пример графического представления:

50/50
=================================================================================
|                                         |                                     |
|  <Left bar with HTML content>           |  <Right bar with HTML content>      |
|                                         |                                     |
=================================================================================

33/67
=================================================================================
|                       |                                                       |
| <Small Left w/HTML>   |  <Large Right w/HTML>                                 |
|                       |                                                       |
=================================================================================

(и так далее..)

Основываясь на том, что я могу сказать, в Orchard есть способы создания различных типов контента с опцией «Body» (поэтому у меня может быть редактор HTML), но я не могу понять, как создать один из них с двумя HTML. редакторы, чтобы у меня была одна маршрутизируемая страница с двумя зонами, на которые она может повлиять. Внутри Layout.cshtml мой пример привязки двухколоночного макета будет таким:

@if (Model.SplitLeft != null && Model.SplitRight != null) {
    @* 50/50 split view *@
    <div class="col_12">
        <div class="col_6 clearleft padding_top_15">
            @Zone(Model.SplitLeft)
        </div>
        <div class="col_6 omega">
            @Zone(Model.SplitRight)
        </div>
    </div>
}

Я знаю, что виджеты имеют возможность указывать зоны, но я стараюсь избегать этого, потому что они не делают его интуитивно понятным для конечного пользователя при попытке создать двухколоночный макет, который им нужно добавить два виджета, применить их к определенным зонам на определенных слоях, изменять правила слоев и т. д. На сайте будет 40-50 страниц, которые могут быть любого из четырех типов, указанных выше, поэтому управление ими с помощью слоев/виджетов будет очень сложным. Кроме того, он также не позволяет использовать модель публикации/отмены публикации, которую, как я гарантирую, хотел бы мой клиент.

Я, конечно, могу создать модуль для этого, если мне нужно, но что-то подсказывает мне, что Orchard уже поддерживает это, и я просто что-то упустил в том, как его настроить.

Предложения?

Редактировать. Я немного подумал об использовании альтернатив, но не смог понять, как создать тип контента, под которым будут два других типа (например, левое/правое представление для редактора HTML). Вероятно, самым большим препятствием является то, что мне нужно, чтобы два HTML-редактора отображались на главном экране редактирования, чтобы пользователю было очевидно, что есть что (например, SmallLeft/LargeRight, LargeLeft/SmallRight, 50/50 Split), поэтому создание страницы интуитивно понятно.


Ответы:


1

Чтобы добавить дополнительные HTML-редакторы, вам нужно добавить TextField к элементу контента. После того, как вы добавили его, вам нужно установить html в качестве flavour этого поля.

21.03.2013
  • Это сработало, но как указать, в какие зоны модели они входят? Я пробовал на Placement.info, но безрезультатно. Тип контента, который я создал, назывался SplitPage (это был идентификатор контента), а мой XML для файла размещения был следующим: ‹Match ContentType=SplitPage› ‹Place Parts_Title=-/› ‹Place Parts_Common_Metadata=-/› ‹Place Parts_Fields_Common_Text-LeftSide= SplitLeft /› ‹Place Parts_Fields_Common_Text-RightSide=SplitRight /› ‹/Match› Этот запрос на сопоставление был частично выполнен (метаданные исчезли), но размещение двух моих текстовых полей в этих зонах модели не сработало. 21.03.2013
  • На самом деле это не Parts_Fields_Common_Text-LeftSide, а Fields_Common_Text-LeftSide (без Parts_). Обратите внимание, что это будет соответствовать локальным зонам (зоны внутри вашего шаблона Content-SplitPage.cshtml, показанные @Display(Model.SplitLeft)). Если вам нужно разместить в глобальных зонах (внутри шаблона Layout.cshtml) вам нужно поставить знак / перед названием зоны (например: <Place Fields_Common_Text-LeftSide="/SplitLeft" />) 21.03.2013
  • Идеально! Это сделало именно то, что мне было нужно, за исключением еще одной вещи. Содержимое теперь отображается, как и ожидалось, но имя каждого текстового поля (например, левая сторона: [html-содержимое из редактора]) отображается перед текстом из редактора CMS. Я уверен, что удаление этого также является записью конфигурации Placement.info, но я не уверен, как это сделать. 21.03.2013
  • Текстовые поля по умолчанию реализуют шаблон /Core/Common/Views/Fields.Common.Text.cshtml. Он отображается как FieldName: HtmlContent. Вы должны скопировать этот файл в папку Views вашей темы и изменить его в соответствии с вашими потребностями. 22.03.2013
  • Я понял. Мне нужно было скопировать Fields.Common.Text.cshtml из Orchard.Core в мою тему и изменить его там. 22.03.2013
  • Почти одновременно :) 22.03.2013
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]