我认为这个问题是不言自明的。
例如,我需要一个名为“人”的内容类型,其中包含 2 个字段(姓名、年龄)。
我尝试了谷歌搜索等,但虽然有很多关于“drupal 7 以编程方式添加内容类型”的参考资料,但我找不到 Drupal 8 的参考资料。
我能够在 Drupal 7 中创建内容类型,但似乎情况发生了一些变化。
欢迎任何参考(如果不是完整的代码)。
只需使用 Drupal 安装创建内容类型(空测试即可)。为了让生活更轻松,请在机器名称中使用一些不同的文本。示例:假设 mkk 是您的模块名称,为您的内容类型 mkk_person 设置机器名称,字段机器名称 field_mkk_person_name。完成后,转到(测试)安装目录并在终端“drush -y cex”中运行)。在目录 .../sync(它将显示完整名称)中,您将找到名称中带有 mkk 的文件。将这些文件复制到目录 ...modules/mkk/config/install 中,您就完成了。
您仍然可以更改内容类型并重做操作,但是因为到处都有 uuid (查看文件),我假设您必须保持这些 uuid 的完整。因此,重用测试机器或先在新机器中安装模块。
我设置了一个启用了视图 REST API 的 Drupal 8 后端,并使用 jQuery 创建了一个简单的前端。jQuery 会将新的内容类型发布到将与 REST API 交互的 php 页面。这是我用来创建节点数组并将其发送到站点的代码:
$node = [
'_links' => [
'type' => ['href' => 'http://<SITE URL>/rest/type/node/page']
],
'title' => [
0 => ['value' => "New Node Title"]
]
];
$data = json_encode($node);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => '<SITE URL>/entity/node',
CURLOPT_HTTPHEADER => ['Content-type: application/hal+json'],
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => '<USERNAME>:<PASSWORD>',
]);
echo curl_exec($ch);
困难的部分是正确构建节点数组结构。
与任何事情一样,有几种方法可以给这只猫剥皮。