Есть ли способ создать (и обновить) таблицу стилей, используя 2sxc и шаблон razor?

DNN 9.3.2 / 2sxc 10.25.2

У меня есть тема DNN, которую я использую для определенного типа субпорталов - в конечном итоге у меня будет 8 субпорталов. Каждый субпортал имеет одинаковый макет, но они будут иметь разные цвета в соответствующей теме. Поэтому мне нужно будет создать таблицу стилей с правилами CSS и цветами для каждой темы. Я знаю, что есть несколько относительно простых способов сделать это:

  1. Изменение portal.css каждого портала для переопределения темы или (просто, но может быть сложно поддерживать обновления)
  2. Создание собственной темы для каждого портала (излишество)
  3. Использование SCSS для создания шаблона с 8 различными файлами переменных (работает нормально, но не позволяет вносить изменения редакторами содержимого)

Итак, мне любопытно, есть ли более умный способ использования 2sxc, который упростил бы обслуживание не только меня, но и редакторов контента моего портала.

Я хочу создать модуль содержимого 2sxc с несколькими разными полями для подборщиков цвета, которые позволят мне (и моим редакторам содержимого) просто открыть модальное окно редактирования 2sxc (на домашней странице), заполнить все поля цвета, а затем бритву template выведет шаблон CSS с цветами, чтобы переопределить стили темы на обложке DNN. Я знаю, что могу сделать это с помощью встроенного CSS, но это будет означать, что модуль должен отображаться на каждой странице, и я бы также предпочел избегать встроенного CSS.

Итак, я считаю, что это будет работать так:

  1. Разместите модуль содержимого 2sxc на отдельной странице каждого портала.
  2. Edit modal> поля будут выглядеть примерно так: основной цвет (rgba), вторичный цвет (rgba), серый цвет (rgba) и т. Д.
  3. После нажатия кнопки сохранения шаблон изменяет файл theme.css уровня портала, который загружается оболочкой.
  4. Любые изменения в модуле приведут к перезаписи файла CSS.
  5. Я мог бы обновить шаблон C # razor, чтобы добавить, удалить или изменить правила или преобразовать значения входных данных.

Возможно ли это или это слишком сложно? Есть ли лучший способ сделать это?


person Aaron - Wolf X Machina    schedule 22.04.2020    source источник
comment
Я с нетерпением жду других ответов. По сути, вы хотите иметь файл прототипа, тип контента, который предоставляет настраиваемые значения токенов, а затем выполнять замену в прототипе файла, а затем сохранять его как Portal.css. Фактически вы можете сохранить его в любом файле где угодно, если у вас есть поле, в котором указан выходной файл. Хотел бы я еще немного подумать об этом ...   -  person Joe Craig    schedule 24.04.2020


Ответы (1)


Так что меня давно не было, надеюсь, мой ответ еще поможет ...

У нас есть очень простое решение :). Если вы посмотрите шаблон мгновенной загрузки, то увидите, что мы добавляем различные классы в тег <body>.

https://github.com/2sic/dnn-theme-bootstrap4-instant/blob/master/controls/body-css-classes.ascx#L86-L91

Таким образом, мы можем просто использовать обычный CSS темы с правилами, основанными на портале-27 и т. Д., Чтобы варьироваться в зависимости от портала.

person iJungleBoy    schedule 04.06.2020
comment
Этот ответ полезен, но моя идея заключалась в создании настраиваемого редактора тем для нетехнических редакторов контента, а не для упаковки всех стилей портала в одну тему. В задаче, над которой я работал, в конечном итоге моим пользователям не нужно редактировать тему, поэтому с тех пор я использовал только SCSS для создания отдельных перезаписей для стилизации каждого портала, который хорошо работает. - person Aaron - Wolf X Machina; 05.06.2020