Целый раздел сайта в виде модуля DotNetNuke - PullRequest
2 голосов
/ 06 июля 2011

Мне нужно разработать целый раздел сайта (около 10 разных страниц) в виде модуля DotNetNuke. Сайт будет использовать DNN в качестве CMS, где редакторы будут управлять содержимым HTML для большей части сайта (за исключением того раздела, который я буду разрабатывать).

Я уже провел довольно обширное исследование по разработке модулей DNN (даже смотрел некоторые записанные вебинары DNN Corp). К сожалению, большая часть того, что я мог найти в Интернете, связана с разработкой простых модулей, похожих на виджеты. Кроме того, большинство из них использует пошаговый подход «как использовать visual studio для достижения x», пока я пытался понять, как работает DNN. Так что, похоже, я должен сам в этом разобраться ...

На данный момент я уже немного знаком с DNN и вижу несколько разных решений моей проблемы:

  1. Создание модуля для каждой страницы в моем пользовательском разделе. Мне не очень нравится эта идея, особенно потому, что у меня есть код, который нужно разделить на нескольких страницах.
  2. Разработка одного модуля с несколькими пользовательскими элементами управления внутри (по одному для каждой страницы) и использование пользовательских настроек модуля, чтобы каждая страница знала, какой элемент управления отображать.
  3. Разработайте «поддельный» модуль, который будет работать как библиотека, и дополнительные модули для каждой страницы.
  4. Разработайте модуль библиотеки, затем используйте Razor Host Module и сценарии Razor для представлений (мне не нужны / не нужны веб-формы в моем приложении).

Поэтому я решил попросить вас, ребята, за советом. Какой предпочтительный путь? Может, ничего из вышеперечисленного? Я знаю, что все четыре варианта выше должны дать мне желаемый результат, но я также не хочу слишком сильно идти против «пути DNN» ...

Ответы [ 4 ]

4 голосов
/ 06 июля 2011

Я бы не рекомендовал # 1 (несколько модулей) или # 3 (также несколько модулей) вообще, и хотя # 2 (настройка одного модуля с уровнем модуля, который определяет представление), безусловно, является хорошей опцией, широко используемой DNNРазработчики модулей, кажется, вы бы предпочли # 4 (Razor), а не # 2, потому что вам нравится стиль разработки.

Итак - я бы рекомендовал использовать подход Razor, который, хотя кажется, что вы понимаетеПодход очень хорошо, я хотел бы разработать для потомков:

  • Сборка библиотеки (сборка / DLL) для инкапсуляции всей вашей бизнес-логики многократного использования
  • Построение Razor представлений для каждогостраница, которая использует эту логику и отображает ваши данные на странице
  • Перетащите модуль Razor Host на каждую нужную вам страницу и укажите правильный вид

Это должноработать очень хорошо.

1 голос
/ 07 июля 2011
   <folder>
      <name>BlogDisplay</name>
      <friendlyname>Blog Display</friendlyname>
      <foldername>WebLog</foldername>
      <modulename></modulename>'

   '<folder>
      <name>BlogSidebar</name>
      <friendlyname>Sidebar Navigator</friendlyname>
      <foldername>WebLog</foldername>
      <modulename></modulename>

Это будет выглядеть примерно так!вот где находится foldername.Он определяет, куда в DesktopModules будет установлен ваш модуль.

В книгах DNN 5 метод разработки проекта веб-сайта все еще используется, но когда вы участвуете в разработке на основных модулях, вы будетеобнаружите, что проекты выполнены в стиле разработки проектов веб-приложений, что лучше, потому что весь ваш код находится в сборке и не отображается как исходный код в Интернете.

Вы определенно на правильном пути.

1 голос
/ 07 июля 2011

Модули - это термин, который широко используется всеми нами.

Более четкие определения

  • Пакет = Zip-файл (не модуль)
  • Манифест =Файл .DNN

Манифест позволяет определять пользовательские элементы управления Модули (группа Просмотр / Редактирование / Настройки) как один установочный пакет.

В манифесте DNN 3.0, если выВы по-прежнему в этом формате, и вы заметите, что базовый одиночный установочный пакет структурирован следующим образом (кратко)

<dotnetnuke version="3.0" type="Module">
  <folders>
    <folder>
      <name>Side bar Navigation</name>
      <modules>
        <module>
          <friendlyname></friendlyname>
          <cachetime>0</cachetime>
          <controls>
            <control>
              <title>View</title>
              <src>DesktopModules/Module/View.ascx</src>
              <type>View</type>
            </control>
            <control>
              <key>Settings</key>
              <title>Settings</title>
              <src>DesktopModules/Module/Settings.ascx</src>
              <type>Edit</type>
            </control>
          </controls>
        </module>
      </modules>
      <files>
          ...
      </files>
    </folder>
</folders>
</dotnetnuke>

Так что вышеизложенное определяет отдельный модуль в установочном пакете.

В контексте блога у вас будет 2 модуля

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

Что вы можете сделать, это упаковать модуль отображения блога в манифест вкопия <folder></folder>, а затем боковая панель Navigation Модуль в другой копии структуры <folder></folder>.

Например, в этом проекте 7 модулей;Навигация по боковой панели, модуль пользовательского поиска, бла-бла-бла

<dotnetnuke version="3.0" type="Module">
  <folders>
    <folder>...</folder>
    <folder>...</folder>
    <folder>...</folder>
    <folder>...</folder>
    <folder>...</folder>
    <folder>...</folder>
    <folder>...</folder>
  </folders>
</dotnetnuke>
  1. 1 Установочный пакет (что означает 1 проект веб-приложения)
  2. 7 модулей
  3. Одна сборка для размещения в корзине /
  4. Весь код является общим, и вы можете наследовать его от других ссылок на библиотеки для дальнейшего развития.

У них разные представления, имена, дружественные имена, но все имеют один общий <foldername>

КЛЮЧ в упаковке.

1 голос
/ 06 июля 2011

Я предполагаю, что вы разрабатываете свое программное обеспечение в стиле "Web Site Project".Я бы порекомендовал вам взглянуть на стиль выполнения проекта "Веб-приложение".

Если у вас есть общие функции в библиотеке, не стесняйтесь собирать сборку и помещать ее в папку bin,оттуда он будет получен DNN и будет работать в контексте http, что здорово!

Создайте свой модуль в одном проекте и упакуйте разные модули в манифест DNN.

Надеюсь, я не говорю о том, что вы понимаете.


Добавлен еще один ответ, это пост сам по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...