在我们编写的CMS应用程序中,我有以下目录结构:
/application
/modules
/cms
/filemanager
/block
/pages
/sitemap
/youtube
/rss
/skin
/backend
/default
/css
/js
/images
/frontend
/default
/css
/js
/images应用程序包含特定于当前cms实现的代码,即此特定CMS的代码。模块包含我们跨项目共享的代码的可重用部分,例如与youtube或rss提要一起工作的库。我们包括这些作为git子模块,以便我们可以更新模块在任何网站,并推动所有其他项目的变化。它使得对我们的代码应用更改并分发它变得非常容易。我们想把CMS变成一个模块,这样我们就能得到同样的好处--我们可以在源代码管理下运行整个项目,然后根据需要通过git子模块更新cms。然而,我们遇到了一个问题: cms需要javascript//css才能正常工作。
我们想过的事情:
1. Skin should be available on the document root, module code shouldn't be, and if it is it should probably be secured via .htaccess
2. It doesn't seem to make any sense bundling assets with php code
3. We could create a symlink between /skin/backend/ to go to /modules/cms/skin but does this cause any security problems, and do we want to require something like a symlink for the application to work?
4. We could create a hook for git or a shell script that copies files from modules/cms/skin to skin/backend when an update occurs, but this means we lose the ability to edit CMS core files in a project then push them back
这通常是如何在大规模的cms中实现的?如何在版本控制下获得cms的源代码,为客户端处理应用程序,然后将源代码更新为发行版并由供应商提供?像Magento或Drupal这样的应用程序是如何做到的?
发布于 2010-04-13 10:38:44
我不熟悉CMS项目,但您能:
中的嵌套子模块。
cms将是cms的一个“主要项目”-皮肤,这意味着每次提交cms时,您都会首先提交cms-皮肤,而"cms提交“将启动提交时使用的cms皮肤的确切SHA1引用。
那样的话,你只能拉cms,然后它就会得到你需要的cms的确切版本。
有关更多信息,请参见有关子模块的真实性质的。
https://stackoverflow.com/questions/2628625
复制相似问题