将CMS集成到PHP应用程序中

将CMS集成到PHP应用程序中,php,content-management-system,Php,Content Management System,我有很多PHP应用程序(除了PHP之外),由于应用程序或遗留实现的复杂性,它们不太适合构建在CMS之上。将CMS功能引入应用程序的好方法是什么?在过去,我一直在服务器端使用HTML代码段,这些代码段包含在页面中,并通过Dreamweaver或CushyCMS等HTML工具进行维护。这使我有一些内容领域,管理员可以维护。但是我对CushyCMS(或独立DW)不是很满意,因为它的能力有限。我一直在考虑使用类似的Wordpress来维护直接包含在服务器页面中的内容。但实际问题是……:) 在不使用Wor

我有很多PHP应用程序(除了PHP之外),由于应用程序或遗留实现的复杂性,它们不太适合构建在CMS之上。将CMS功能引入应用程序的好方法是什么?在过去,我一直在服务器端使用HTML代码段,这些代码段包含在页面中,并通过Dreamweaver或CushyCMS等HTML工具进行维护。这使我有一些内容领域,管理员可以维护。但是我对CushyCMS(或独立DW)不是很满意,因为它的能力有限。我一直在考虑使用类似的Wordpress来维护直接包含在服务器页面中的内容。但实际问题是……:)


在不使用Wordpress或类似的CMS构建整个网站的情况下,获得CMS功能的好方法是什么。

CMS变得复杂是有原因的-您可以从添加保存到文件或sqlite的简单文章管理开始。。那么你需要几个用户。。然后是树状菜单、权限系统、文章锁定或版本控制。。然后,您需要更好的性能和可伸缩性,因此可以迁移到real DB。。然后您需要动态数据,如小部件或表格。然后是模块化结构。一个商店模块、时事通讯等等,这样你就得到了一个只有你自己知道如何工作的复杂引擎


因此,如果您希望长期使用可维护的CMS,请使用现有的开源解决方案,即使它们在内部像Wordpress一样难看。您可能需要将一个组件集成到另一个组件中,在这两个组件上都需要API。

好的,您可以创建一个CMS扩展来处理CMS中的路由,然后将结果委托给底层应用程序

举个例子,让我们考虑一下Drupal7。在此CMS中,您可以创建一个包含两个文件的文件夹模块:一个用于模块数据,另一个用于模块代码

my_module/my_module.info 有了这段基本代码,您可以将应用程序“集成”到drupal,只需将其作为任何drupal模块安装,然后转到htt://your-cool-site/App 执行您的应用程序

更多关于drupal模块创作的信息

我希望有帮助:)


是一个考虑到这一点的框架,它绑定到drupal(6、7和8)和joomla。

在CMS上切换现有软件并不总是可以选择的,我不喜欢创建自己的CMS,所以我正在考虑解决这个问题的不同选项。
name = My Module
description = A description of what your module does.
core = 7.x
<?php
/**
* Respond to a drupal's URL with a callback.
*/
function my_module_menu() {
    $menu = array();
    $menu["App"] = array(
        "page callback" => "my_module_run",
        "access callback" => true,
    );
    return $menu;
}

/*
* Do the job
*/
function my_module_run() {
    ob_start();
    // Call your application by including it's index.php file or whatever
    // operation needed.....
    // Capture the result of the application.
    $result = ob_get_clean();

    // If the request is ajax, echo the result.
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
       && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        echo $result;
    } else {
        //Otherwise, return it, so it is rendered as part of the 
        // CMS content.
        return $result;
    }
}
?>