如何处理Web应用程序中的模块主题?

时间:2009-10-03 09:20:25

标签: templates plugins themes theory module

我制作了一个CMS,允许用户选择在网站上显示哪些模块。我还有模板/主题,定义网站的外观。我遇到的问题是这样的:

假设我在网站上放置了一个投票亭模块。当我按“查看结果”时,它将显示结果,如图演示页一样:http://osc.template-help.com/joomla_25754/index.php?option=com_poll&id=14:joomla-is-used-for

我的第一个问题是:主题/模板而不是模块的责任是不是图形栏的主题?如果模块可以决定要显示的内容,则可能会显示一些不适合模板/主题的图形。

我应该如何处理这一切?我不确定如何更好地解释问题,但问题是在当前版本中,某些模块将显示对某些模板看起来不好的图形/外观。所有gfx和类似的东西应该是模板系统的责任,对吧?但是,我将如何实现这一目标......模块和模板如何协同工作以构建类似的东西或者您有其他想法?

4 个答案:

答案 0 :(得分:4)

图像应由主题的CSS

定义

确实应该在主题的CSS文件中定义图形元素(在本例中为结果栏)的外观和感觉,以适应其他主题元素。

但是有两种可能性,取决于你的主题

<强> 1。图形样式不会发生显着变化(即图标将始终相同
如果你的主题没有改变图形样式(即从垃圾到严格的商业智能),而只是颜色方案,我建议你使用带有alpha通道的PNG,这几乎肯定适合任何配色方案。

<强> 2。图形样式发生显着变化(即每个视觉元素都可以/将会改变
在这种情况下,我建议您将主题CSS文件中的所有图像定义为背景图像。您的<IMG>元素应仅显示正确大小的透明图像(也可由主题定义),但由特定主题定义的CSS文件应定义将在此透明图像的背景中显示的实际图像。这样您就可以使用相同的HTML但主题CSS文件。

答案 1 :(得分:2)

通常,您应该尝试使用CMS标准的CSS类名。例如。 Joomla有一个名为sectiontableentry1和sectiontableentry2的类,用于表中的交替行。如果您可以劫持任何这些类,它将使您的扩展符合模板的颜色方案。如果没有一个标准类名是合适的,那么你能做的最好的就是尝试采用中性色方案 - 通常是灰色阴影。

这里有Joomla的核心CSS类列表:http://docs.joomla.org/Template_reference_material

答案 2 :(得分:1)

这是完全正确的。大多数具有某种主题的开源cmsses /博客不支持所有扩展,只是因为扩展不在cms作者的控制之内(并且不在主题创建者的控制之内)。所以主题在基本的cms上看起来很好,也许在一些常见的扩展上,但之后只是手指交叉。

无论您为主题制作者决定预先定义了多少项目/类型/类别,总会有一些在主题设置中未被考虑过的内容。摆脱这种情况的唯一方法是非常严格的设计准则,即使这样也永远不会让你达到100%的覆盖范围,比你没有更接近。

示例:某个插件会显示条形图。你在主题中的第一次尝试是总是要求一个主题列出要在图表中使用的10种颜色,当然这个图表需要11 :-)现在你的主题引擎的下一次迭代要求主题作者提出一个方案为了在图表中使用产生无穷无尽的颜色(你只是让一个人的工作变得更加困难......)当然,需要显示的图表需要3组,每组2个相关的颜色......你永远不会赢得这场比赛。

我认为你最好的选择是确保主题创建者有一套很好的核心css类来定义(以及你基础cms的大量参考页面,以便他们可以测试他们的设计)。现在,您应该鼓励您的扩展程序制作者尽可能多地使用标准样式,并通过使用众多主题轻松检查扩展程序来激励他们这样做。作为最后但非常需要的选项,您应该让设置网站的人能够轻松覆盖/更正特定主题中的扩展样式 - 这应该会使主题系统的问题成为负担,而不是交易断路器。

答案 3 :(得分:1)

作为一种选择,我们被认为允许主题重新定义基本模块元素在html级别上的呈现方式。

使用asp.net mvc这很容易实现,它看起来像文件夹'Elements',每个元素都有特定的文件,例如header.ascx,button_confirm.ascx,button.cancel.ascx,votes.ascx, tags.ascx等。

所有这些文件都应具有通用的Model参数,该参数应允许访问模块属性和内容项属性。 (我希望你的内容项目有基类)

我们停止了,因为这超出了范围。