我想使用现有的Drupal服务,使用ajax调用从独立插件在drupal站点上创建内容。任何人都可以提供详细信息......?我可以使用任何网络服务。
答案 0 :(得分:0)
在我们开始讨论之前,我高度建议完全停用用户#1并使用具有管理员权限的其他用户来执行您的管理操作。有关您应该执行此操作的更多信息here。
你说:
用户可以使用他们的drupal网站使用扩展程序进行内容管理,而无需通过网站登录网站
但是,无论如何,你看一下你的用户需要进行身份验证,否则你怎么能相信他们应该以管理员身份发帖?您会注意到Drupal使用会话数据来保持用户会话活跃。我们来看看一个cookie的示例,它为您提供管理员访问权限:
cookie value domain path expires HTTP
SESS92fe1e89dd2d30d5c7ef053b44d061s5 bJzbNlFKnbwvoTOH8A1XBWHipcRPnC32wOBdAJiEmJg example_domain.com / 2015-07-09T21:46:07.841Z true
我在一秒前创建了这个cookie,因此您可以看到,默认情况下,Drupal管理员cookie在用户计算机上保持有效不到一个月。将此会话数据提供给您的应用程序的方法有多种,最简单的方法就是使用<iframe>
包装器。 iframe登录 DO 与Drupal一起使用并在此处进行了测试:http://jsfiddle.net/z1rrj4ky/
只需创建自己的自定义登录页面和模块,就像扩展程序的其余部分一样。将管理员cookie返回到您的应用程序后,您甚至不需要Drupal管理主题页面来发布内容。您只需要包含它们就可以访问Drupal API函数。快速实现这一目标的一种方法是在本地安装Drupal到具有目标服务器数据库的应用程序。您可以通过修改位于<drupal_root>/sites/default/settings.php
的设置文件来设置要与目标数据库链接的扩展数据库,或者在某些情况下:<drupal_root>/sites/default/default.settings.php
如果您需要访问多个数据库您不需要多次安装Drupal,只需更改environment var
或根据来自var
的{{1}}重新定义设置。
一旦完成所有设置,您就可以随心所欲地提供内容发布页面。如果您不想使用自定义主题使用Drupal Admin界面,只需以编程方式创建内容并随意提供 - 即使是在Drupal根文件夹之外。
例如:
constants
一旦您验证了用户具有发布和编辑权限,并且您反对使用带有自定义主题的原生管理包装器,您就会发现有很多教程可以告诉您如何以编程方式创建或编辑内容;例如 - https://www.drupal.org/node/1388922向您展示如何以编程方式创建节点。
<强>回顾:强>
// get access to Drupal API functions from outside of Drupal
// This example assumes a sibling directory to the Drupal directories
// it can be easily modified to instantiate from directories much
// further away or deeply nested
$path = $_SERVER['DOCUMENT_ROOT'];
$base_url = 'http://'.$_SERVER['HTTP_HOST'];
chdir($path);
define( 'DRUPAL_ROOT', getcwd() );
require_once './includes/bootstrap.inc';
require_once DRUPAL_ROOT . '/includes/common.inc';
require_once DRUPAL_ROOT . '/includes/module.inc';
require_once DRUPAL_ROOT . '/includes/unicode.inc';
require_once DRUPAL_ROOT . '/includes/file.inc';
require_once DRUPAL_ROOT . '/includes/session.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
// now you can use all drupal functions:
// For example, let's check if current user is admin:
global $user;
$user_array = (array) $user;
if ( array_key_exists ( 3, $user->roles ) ) {
$user_type = "admin"; // admin to save the day!
} else {
$user_type = "user"; // not an admin, can't post or edit content doh!
}
或environment variables
的其他页面auth Drupal管理员没有用户看到它。如果你这样做肯定哈希包含或环境变量或其他。constants
文件夹中的settings.php
确保您的本地扩展版Drupal与目标网站的数据库相连接好运!