我可以以某种方式改进我的模块皮肤架构吗?

时间:2010-01-08 14:57:33

标签: architecture content-management-system modularity

我正在为一个私人项目设计CMS,这样可以简化网站的编辑工作。它支持模块化。但是,它仍处于测试阶段,我现在问你是否可以看到我可以改进的东西,或者你是否有一些完全不同的方法来解决这个问题。

首先,我的“主题”是一组HTML,CSS和JS。每个主题可以包含不同的样式,每个样式都在单独的文件中(如full-width.html,fluid.html等)。然后管理员可以为不同的页面选择不同的样式。有些页面只有1列,有些页面有侧边栏等。

当前它的工作方式是样式HTML看起来像:

<html>
<body>
<div id="header">{block id="header"}</div>
<ul>
{blocks id="list"}

{block}
<li>
{content}
</li>
{/block}

{/blocks}
</ul>
</body>
</html>

主题创建者可以放置“块”,用于定义管理员放置模块的位置。这些模块可以只是文本,也可以包含更复杂的HTML,如shoutbox或登录表单。无论如何,块必须都有ID,除了那些在另一个块内的ID。这样,当管理员决定放置模块的位置时,他将获得如下形式:

 Header module: --select--
 List modules:
     --select--
     --select-- (automatically adds new selects as needed)

其中--select--是一个包含所有已安装模块的HTML选择框。该ID用于使管理员更容易理解所选模块在网站上的位置,而无需保存更改和预览。

主题创建者能够使用{blocks}标记放置多个块。这意味着管理员可以在其中放置几个​​模块,比如在Wordpress中,您可以在侧栏上拥有“标签”,“登录”,“附属机构”等许多模块。可以使用{blocks limit =“5”}来限制模块的数量。我也可以有其他一些设置。

如果在页面上将块指定为{block id =“header”},则表示块的所选模块的内容将被替换为该块。但是,如果它是{block} {/ block},那么主题创建者必须在标记之间的某处使用{content}来指定内容的位置。他还可以使用{name}来指定模块的名称等。

总的来说,我能做些什么改进吗?您有任何建议吗?

最重要的是,我是否正在尝试重新设计一个我应该使用的现有强大的模块化系统?

4 个答案:

答案 0 :(得分:2)

看看这个article about Facelets。如果你不是一个java家伙并不重要。只需看看文章中间的facelet结构。

在实践中,这些结构非常方便,所以你可能会发现你想要用你的cms提供的东西。

答案 1 :(得分:1)

  我正试图重新设计一个   我现有的强大的模块化系统   应该用吗?

我可以想到两个符合描述的:带有Tiles的Struts和基于Web的服务squarespace

答案 2 :(得分:1)

从Castle堆栈看一下NVelocity它非常强大,看起来你正试图重新发明轮子。

http://www.castleproject.org/others/nvelocity/index.html

我希望这会有所帮助。

答案 3 :(得分:1)