由于应用程序或遗留实现的复杂性,我有许多PHP应用程序(除了PHP之外),它们不适合在CMS之上构建。什么是将CMS功能引入应用程序的好方法?在过去,我一直在服务器端使用HTML片段,这些片段包含在页面片段中,片段通过Dreamweaver或CushyCMS等HTML工具进行维护。这使我可以拥有管理员可以维护的一些内容区域。但是我对CushyCMS(也不是独立的DW)不太满意,因为它的功能有限。我一直在考虑使用类似的Wordpress来维护直接包含在服务器页面上的内容。但实际问题是...... :)
如果不使用像Wordpress或类似的CMS构建整个网站,那么获得CMS功能的好方法是什么。
答案 0 :(得分:1)
CMS变得复杂有一个原因 - 你首先要添加简单的文章管理保存到文件或sqlite ..然后你需要几个用户..然后是树状菜单,权限系统,文章锁定或版本控制..然后你想要更好的性能和可扩展性,所以你迁移到真正的数据库..然后你想要像小部件或表格的动态数据。然后模块化结构。商店模块,时事通讯等。所以你最终会得到一个复杂的引擎,只有你知道它是如何工作的。
因此,如果您想长期使用可维护的CMS,请使用现有的开源解决方案,即使它们在内部像Wordpress一样丑陋。您可能需要将它们集成到另一个中,这就是双方都需要API的地方。
答案 1 :(得分:0)
嗯,你可以做的是创建一个CMS扩展,它处理CMS中的路由,然后将结果委托给底层应用程序。
为了举例说明,让我们考虑一下drupal 7.在这个CMS中,您可以创建一个包含两个文件的文件夹模块:一个用于模块的数据,另一个用于模块的代码。
my_module / my_module.info< -Module的数据
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模块创作的更多信息here。
我希望它有帮助:)
Here是一个考虑到这一点的框架,它与drupal(6,7和8)和joomla绑定。