为网站建立CMS

时间:2011-08-14 16:26:50

标签: php codeigniter content-management-system

我的主网站kansasoutlawwrestling.com将使用Codeigniter,然后我也为自己创建了一个CMS,它是一个独立的实体,位于kansasoutlawwrestling.com/kowmanager

我的CMS将使用不同的CSS,javascript和图像文件,所以我想知道我是否应该只安装两个不同的CI。我试着查看PyroCMS,但文件夹太多,我在理解文件结构方面遇到了问题。适当的设置是什么?

3 个答案:

答案 0 :(得分:5)

Codeigniter的基本结构是你的根文件夹中有2个文件夹和1个文件:

root/application/
root/system/
root/index.php

现在,显然,您可能还有更多文件和文件夹,但这些是每个Codeigniter应用程序运行的基础。

这些都做了什么?首先,每个页面请求都从 index.php 开始。这个页面设置了一些配置和一些常量,然后交给Codeigniter。

“Codeigniter”在哪里?这将是 system 文件夹。您或其他任何人都不应该触摸此文件夹。与您的应用相关的所有内容都存储在应用文件夹中。这包括您的所有配置,控制器,模型,视图,甚至库扩展(尽管您可以存储此文件夹之外的其他内容,例如images / css / js / fonts等。)

因此,设置商店的正确方法是:

root/application/
root/system/
root/index.php

root/kowmanager/application
root/kowmanager/index.php

但是,您必须通知您的kowmanager的 index.php system 文件夹不在同一目录中。因此,在 index.php (在 kowmanager 中),在第25行附近,您应该看到:

$system_path = "system";

只需将其更改为:

$system_path = "../system";

你已经完成了。

现在,您的应用程序(您的主站点和CMS)将共享相同的Codeigniter基础。在更新CI时,您将在主系统文件夹中执行此操作...

答案 1 :(得分:3)

我已经完成了几个Codeigniter CMS并采用了两种方式:

  • 集成(共享应用程序文件和资产)
  • 单独安装(仅限共享系统文件)

起初我喜欢集成方法的便利性:当我需要前端后端的自定义库或图标文件时,它可以不用重复。我已经改变了主意。

我现在的意见是,经过4年左右的时间研究这些产品后,拥有集成CMS的好处是短暂的。

  • 90%的代码都在后端,因此您最终会得到许多仅用于管理的帮助程序,库等。
  • 您需要调整的任何共享资源最终都会在一方面工作得很好,但会破坏另一方,或者过度/无用。
  • 当模型充满了仅用于后端的代码时,模型往往会在前端使用。
  • 共享模板,js和css文件几乎不起作用。控制面板可能不需要在IE {insert version here}中工作,但您的前端应该。
  • 它会更新和升级到任何一端粗略,除非您确切知道需要更新的内容和不需要触摸的内容,以及您可能已针对特定网站的前端进行自定义而不应更改的内容。
  • 当您的管理员和普通用户不在同一个存储桶中时,验证逻辑会更容易
  • 单独安装更容易设置,并且可以“粘贴”到现有站点,而不必集成它。

我的建议:单独安装。

答案 2 :(得分:3)

如果我是你,我可能不会去单独的应用程序路径。如果您正在共享呈现页面或登录用户的代码之类的内容,那么您将重复进行两次安装。显然,两个单独的安装只需要一个您共享的系统文件夹,因为系统中没有任何变化。如果是我,我可能只是在config/routes.php文件中设置一条路线。

如下所示(假设您在控制器文件夹中名为'kowmanager'的文件夹中有一个名为'kowmanager'的控制器):

// This would redirect all calls to kansasoutlawwrestling.com/kowmanager 
// to the kowmanager controller.  

$route['kowmanager'] = "kowmanager/kowmanager";

// Redirects all kowmanager/method requests to the kowmanager folder
// and a particular controller

$route['kowmanager/(:any)'] = "kowmanager/$1";

// Redirects all kowmanager/method requests to the kowmanager folder and a
// particular controller and method inside controller.

$route['kowmanager/(:any)/(:any)'] = "kowmanager/$1/$2";

可能不是最佳选择,但这意味着您不会重复相同的代码两次,并且您基本上在一个内部创建了两个应用程序。还有很多其他方法可以做到这一点,包括.htaccess文件中的一些重写。

如果您想要更简单的选项,请单独安装并注意代码重复。坚持干(不要重复自己)的方法。