我正在为一个私人项目设计一个 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,如喊话框或登录表单。无论如何,除了那些在另一个块内的块外,所有块都必须有 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} 来指定模块的名称等。
总的来说,我可以对此做一些改进吗?你有什么建议吗?
最重要的是,我是否试图重新设计一个已经存在的强大的模块化系统,我应该使用它来代替?