繁体   English   中英

将CMS集成到PHP应用程序

[英]Integrating CMS to PHP application

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

如果不使用WordPress等类似的CMS构建整个网站,获得CMS功能的好方法就是什么。

CMS变得复杂是有原因的-首先添加简单的文章管理,然后将其保存到文件或sqlite中。然后需要多个用户。然后是树状菜单,权限系统,文章锁定或版本控制。那么您想要更好的性能和可伸缩性,因此您需要迁移到真实的数据库。然后,您需要动态数据(例如小部件或表)。 然后是模块化结构。 商店模块,新闻通讯等。因此,您最终获得了一个复杂的引擎,只有您知道它是如何工作的。

因此,如果您希望长期维护可维护的CMS,请使用现有的开源解决方案,即使它们像Wordpress那样内部丑陋。 您可能需要将两者集成在一起,那就是在双方都需要API的地方。

好吧,您可以做的是创建一个CMS扩展,该扩展在CMS中处理路由,然后将结果委托给基础应用程序。

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

my_module / my_module.info <-模块的数据

name = My Module
description = A description of what your module does.
core = 7.x

my_module / my_module.module <-模块的代码

<?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;
    }
}
?>

使用此基本代码,您可以将应用程序“集成”到drupal,您所需要做的就是将其安装为任何drupal模块,然后转到htt:// your-cool-site / App来执行您的应用程序。

有关drupal模块创作的更多信息,请参见此处

希望对您有所帮助:)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM