我用CakePHP创建了一个简单的CMS来处理一小部分(但不断增长)的网站。随着我在自己的机器上定期向开发版本添加功能,CMS不断发展。
我使用SVN来跟踪这个开发版本的演变,这就是它。为了建立一个新的网站,我基本上复制/粘贴开发文件夹,并在通过FTP上传新网站之前修改必要的文件。
最后一个问题是,每个网站安装都是独立的,如果我想在现有网站上添加一些新功能,我必须手工复制文件。
另一个问题是,由于特定需求,某些网站已修改了CMS的版本:某些控制器类具有本地版本中不存在的特定方法。
总结一下:
知道它是CakePHP应用程序,你会做什么?我应该如何更改我的代码以同时管理核心和特定代码?
提前致谢!
答案 0 :(得分:2)
...某些控制器类具有本地版本中不存在的特定方法。
您也可以考虑在每个网站应用程序中设置additional class paths的选项。您可以告诉CakePHP完全检查当前应用程序中缺少的文件的其他目录。例如,您可以使用以下目录结构:
/app1 - a standard client's website application
/app2
/app3 - a custom client's website application (with custom controller)
/core - the core CMS application
/cake
通过在/appN/config/bootstrap.php
文件中添加以下内容,您可以告诉CakePHP在/core/controllers
中查找控制器,如果它找不到当前应用程序中的控制器。
App::build(array(
'controllers' => array(ROOT . DS . 'core' . DS . 'controllers' . DS),
));
例如,这将允许您将所有CMS控制器放在/core/controllers
中并删除所有/appN/controllers
目录。只有客户需要自定义控制器(即上面的/app3
)才能创建控制器目录,复制特定控制器并进行修改(添加方法等)。
(这是Wildflower CMS的开发人员采用的方法 - 请注意/wildflower
目录。)
答案 1 :(得分:1)
使用版本控制软件(如SVN)可能会为您解决问题。您工作的每个网站都可以是遵循开发主要分支的分支。每次进行要应用于每个站点的更改时,都要更新主分支,然后让每个子分支从主分支导入更改。
请注意,我更习惯Git的工作原理,因此这种情况在Git中可能比SVN更好,ymmv。