我正在为一个私人项目设计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}来指定模块的名称等。
总的来说,我能做些什么改进吗?您有任何建议吗?
最重要的是,我是否正在尝试重新设计一个我应该使用的现有强大的模块化系统?
答案 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)