如何以编程方式在Drupal 8中创建内容类型?

时间:2015-09-29 16:26:24

标签: drupal drupal-8

我认为问题是不言自明的。

例如,我需要一个名为" person"的内容类型。有2个字段(姓名,年龄)。

我试过googling等,但是虽然有很多参考文献" drupal 7以编程方式添加内容类型",我找不到Drupal 8的参考资料。

我能够在Drupal 7中创建内容类型,但似乎情况有所改变。

欢迎任何参考(如果不是完整代码)。

3 个答案:

答案 0 :(得分:0)

我设置了一个Drupal 8后端,启用了REST API视图,并使用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);

困难的部分是正确构建节点阵列结构。

答案 1 :(得分:0)

与任何事情一样,有几种方法可以给这只猫留下光泽。

  • 使用Configuration Defaults包含您的内容类型和字段。 Features是最简单的方法。 Dribbit.eu也有一个例子。
  • 创建新的(编辑旧的)配置实体。大多数情况下,这与更新内容类型有关...如基本页面或文章。一个例子是D.O

答案 2 :(得分:0)

只需使用Drupal安装创建内容类型(空测试即可)。为了让生活更轻松,请使用机器名称中的一些不同文本。示例:假设mkk是您的模块名称,请为您的内容类型mkk_person创建机器名,字段machine-name field_mkk_person_name。 完成后,转到(测试)安装目录并在终端&#34; drush -y cex&#34;)中运行。在目录... / sync(它将显示完整的名称)中,您将找到名称中包含mkk的文件。将这些文件复制到目录... modules / mkk / config / install中,然后就完成了。

您仍然可以更改内容类型并重做操作,但由于遍布整个地方都有uuid(查看文件),我认为您必须保持这些uuid完好无损。因此,重新使用测试机器或首先安装新模块。