Model view controller 将传统CMS转换为MVC系统

Model view controller 将传统CMS转换为MVC系统,model-view-controller,coldfusion,content-management-system,legacy-app,Model View Controller,Coldfusion,Content Management System,Legacy App,在工作中,我们使用传统的CMS,它在每个网页上使用物理文件。CMS使用ColdFusion作为服务器端语言。页面是从模板派生的,您可以从模板创建模板。这实际上以一种很好的方式允许粒度。然而,我已经看到,如果我们可以让页面本身成为数据库记录,我们就可以消除创建页面的需要,就像WordPress所做的那样 以下是我在尝试实现这一点时遇到的限制。。。页面可以在本地基础上添加元素。因此,如果我们使用模板A创建第1页,它将继承模板A的所有元素和模板的所有配置。但是,在第1页上,在它被创建之后,我可以直接(

在工作中,我们使用传统的CMS,它在每个网页上使用物理文件。CMS使用ColdFusion作为服务器端语言。页面是从模板派生的,您可以从模板创建模板。这实际上以一种很好的方式允许粒度。然而,我已经看到,如果我们可以让页面本身成为数据库记录,我们就可以消除创建页面的需要,就像WordPress所做的那样

以下是我在尝试实现这一点时遇到的限制。。。页面可以在本地基础上添加元素。因此,如果我们使用模板A创建第1页,它将继承模板A的所有元素和模板的所有配置。但是,在第1页上,在它被创建之后,我可以直接(使用CMS GUI)手动向该页添加一个元素,该元素将只驻留在该页上。在我看来,如果我尝试为我们的CMS实现一个MVC框架,那么任何时候我们都想向页面添加一个本地元素,这将构成对新“页面类型”的需求。元素可以配置为“本地数据”并通过页面ID绑定到页面,也可以配置为“全局数据”,用于呈现查询结果,而不必仅绑定到元素当前所在的页面(可以由多个页面使用)

这是一个大问题,我试图以最简洁的方式给出问题和场景。我不是在寻找如何实现MVC perse,而是如何在CMS数据库本机工作的限制下实现MVC

我看到的另一种解决方法是在我创建的MVC框架中以新的方式“创建页面”,我可以通过在页面记录中添加元素来解决这个问题——如果这有意义的话


想法?非常感谢您的任何建议或帮助。

当有这么多现代CMS程序存在时,为什么要从头开始创建一个新的应用程序呢?这些程序要么做您想做的事情,要么通过自定义编程(通常是插件系统)为您添加您想要的功能

在ColdFusion上运行的基于MVC的现代CMS:


当然,如果你不想再使用ColdFusion,Wordpress可能也可以做你想做的事情,但我建议在你花一分钟的时间尝试重新发明轮子之前,对这些应用程序进行一些调查。

哦,相信我,我们已经调查了其中一些。我记得我看着穆拉。我们已经开始了一个项目,以迁移出我们目前的CMS,但我们有这么多的内容在那里,这一倡议刚刚开始-我们将不会离开这个CMS至少2年。我不是想重新创造轮子,我只是想要这个轮子。基本上,我希望将/rel/url/mission.cfm作为/rel/url/index.cfm?page_type=left_sidebar&name=mission默默地使用-我可以很容易地做到这一点。正是我在上面概述的限制在实现时会导致一些问题。ContentBox可以将内容的“viewlet”设置为变量,然后可以在任何地方呈现。我想我不需要任何第三方框架/应用程序/或插件。我需要的大部分内容都可以通过URL重写来完成。我只是在寻找一些关于如何在每个“页面”上保留本地元素的指导。由于添加到页面的元素实际上将添加到index.cfm?var=keyword&var=keyword。。。记录将在数据库中设置为在任何索引的页面ID上创建。cfm的页面ID为。由于index.cfm将是一个基于参数的不同页面,因此这是一个问题。这有意义吗?如果这些页面是数据库记录,它们将如何编译?听起来你想重新发明轮子相信我,我正试图避免重新发明轮子-我只是想要轮子。页面仍然会有一些文件,比如Wordpress(left-sidebar.cfm;right-sidebar.cfm,等等)——但组成页面的内容大体上是数据库记录(页面ID、页面标题、页面内容等)。我们的CMS将所有这些字段作为数据库记录,这不是问题所在。此外,URL重写也不是问题所在。问题是,如果我只是按照我需要的方式实现URL重写,那么在left-sidebar.cfm上定义的本地页面元素将出现在每个left-sidebar.cfm页面类型上。默认情况下,由于此CMS中的每个页面都是不同的物理页面,那么当您向页面添加元素时,它将绑定到该页面-您明白我的意思吗?