【问题标题】:Is there a way I can create (and update) a stylesheet using 2sxc and razor template?有没有办法可以使用 2sxc 和 razor 模板创建(和更新)样式表?
【发布时间】:2020-04-22 23:14:11
【问题描述】:

DNN 9.3.2 / 2sxc 10.25.2

我有一个 DNN 主题,用于某种类型的子门户 - 我最终将拥有 8 个子门户。每个子门户都有相同的布局,但它们在各自的主题中会有不同的颜色。所以我必须创建一个样式表,其中包含 CSS 规则和每个主题的颜色。我知道有几种相对简单的方法可以做到这一点:

  1. 修改每个门户的 portal.css 以覆盖主题或(简单但可能难以维护更新)
  2. 为每个门户构建自定义主题(矫枉过正)
  3. 使用 SCSS 创建包含 8 个不同变量文件的模板(工作正常,但不允许内容编辑器进行修改)

所以,我很好奇 2sxc 是否有更聪明的方法,不仅可以让我轻松维护,还可以让我的门户网站的内容编辑器轻松维护。

我想为颜色选择器创建带有几个不同字段的 2sxc 内容模块,这将允许我(和我的内容编辑器)简单地打开 2sxc 编辑模式(在主页上),填写所有颜色字段,然后然后剃刀模板将输出带有颜色的 CSS 模板,以覆盖 DNN 皮肤上的主题样式。我知道我可以使用内联 CSS 做到这一点,但这意味着模块必须出现在每个页面上,而且我也更愿意避免内联 CSS。

所以我的想法是它会像这样工作:

  1. 在每个门户的单个页面上都有一个 2sxc 内容模块
  2. 编辑模式 > 字段类似于:原色 (rgba)、辅助色 (rgba)、灰色 (rgba) 等
  3. 单击保存后,模板会修改一个由皮肤加载的门户级 theme.css 文件
  4. 对模块的任何更改都将导致 CSS 文件的重写。
  5. 我可以更新 c# razor 模板以添加、删除或修改规则或转换输入值。

这是可能的还是太复杂了?有没有更好的方法来解决这个问题?

【问题讨论】:

  • 我期待看到其他答案。基本上,您想要一个原型文件,一个提供自定义“令牌”值的内容类型,然后将替换到文件原型中,然后将其保存为 Portal.css。如果您有一个指定输出文件的字段,您实际上可以将其保存到任何文件中。我希望我有时间再考虑一下……

标签: css dotnetnuke 2sxc


【解决方案1】:

所以我已经离开很久了,希望我的回答对你还有帮助...

我们有一个非常简单的解决方案:)。如果您查看bootstrap instant template,您会看到我们将各种类添加到<body> 标记中。

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

这样我们就可以只使用主题的普通 CSS 和基于 portal-27 等的规则来因门户而异。

【讨论】:

  • 这个答案很有用,但我的想法更多的是为非技术内容编辑器制作自定义主题编辑器 - 而不是将所有门户样式打包到一个主题中。在我正在处理的任务中,最终我的用户不需要编辑主题,因此我只使用 SCSS 来创建单独的覆盖来设置每个门户的样式,效果很好。
猜你喜欢
  • 2021-04-17
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
相关资源
最近更新 更多