@McMike

Как в Drupal 8 создать node программно?

В общем делаю небольшой скрипт, который должен добавить записи содержимого определенного типа. Можно конечно голым sql записать, но это очень геморно. Как добавить записи использую инструменты самого друпала?
Нашел такие примеры по запросу "drupal 8 create node programmatically"

use Drupal\node\Entity\Node;
$node = Node::create([
// The node entity bundle.
]);
$node->save();

Но прописывая это просто в отдельно php скрипте, лежащем в корневой директории получаю ошибку "Class 'Drupal\node\Entity\Node' not found". Как правильно это использовать?
  • Вопрос задан
  • 590 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ansebul
Использовать так:
<?php
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
use Drupal\node\Entity\Node;

define('DRUPAL_DIR', '/путь/до/корня');
$autoloader = require_once DRUPAL_DIR . '/autoload.php';
$kernel = new DrupalKernel('prod', $autoloader);
$request = Request::createFromGlobals();
chdir(DRUPAL_DIR);
$response = $kernel->handle($request);
$kernel->terminate($request, $response);

$nid = 1488;
$node = Node::load($nid);
echo $node->body->value;


Такой скрипт запускается из консоли:

$php show_node_content.php
Ответ написан
Комментировать
afi13
@afi13
Используйте hook_update() или hook_install() в своем модуле вместо непонятного файла в корневой директории - это будет использование инструментов самого Друпала. А файл у вас не работает, потому что в нем нужные классы не подключены и ядро Друпала не инициализировано, см. как работает index.php для примера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы