Парагафы присоединены к ноде через поле entity_reference_revisions.
Народ, может туплю: а как к ноде присоединить уже созданные параграфы?
Парагафы присоединены к ноде через поле entity_reference_revisions.
Народ, может туплю: а как к ноде присоединить уже созданные параграфы?
Комментарии
Как-то получилось, что никогда не пытался сделать это через UI. А кодом элементарно:
<?php
$new_item = Paragraph::create([
'type' => 'MY_TYPE', // Маш. имя типа параграфа
'field_1' => $some_value_1, // Значения полей параграфа...
'field_2' => $some_value_2,
'field_3' => $some_value_3,
]);
$new_item->save();
// Присоединение нового экземпляра параграфа
// к полю entity_reference_revisions.
$node->field_my_paragraphs->appendItem($new_item);
?>
Подозреваю, что для того, чтобы добавлять через UI - нужно создать представление (View) для выбора параграфов и установить связь с ним в поле "Способ выбора" в настройках вашего поля
entity_reference_revisions
.Вьюха:
![](/sites/default/files/inline/images/2021/17454/par1.png)
Связь с вьюхой в настройках поля парграфов:
![](/sites/default/files/inline/images/2021/17454/par2.png)
Что-то еще нужно? Пока не вижу чтобы можно было на форме ноды указывать ид парграфа.
Нет предположений.
View-то сам работает в предпросмотре? Тестировали?
В предпросмотре вьюхи ИДшники выводятся. Но при созданиии ноды я не вижу их списка выбора. Т.е. виджета нет.
Что касается кода, как вижу приведено создание параграфов. А имеющиеся приаттачить к нодам можно?
P.S. Также пробовал через https://www.drupal.org/project/feeds/issues/2978757 - но пока труба. Не понимаю как получается там у кого-то.
Да можно всё. По сути - можно просто заменить метод
::create()
на::load()
<?php
...
$pid = 1234; // ID параграфа.
$item = Paragraph::load($pid);
// Присоединение существующего экземпляра параграфа
// к полю entity_reference_revisions.
$node->field_my_paragraphs->appendItem($item);
// Не забыть сохранить сущность ноды.
$node->save();
...
?>
или множественное присоединение:
<?php
...
$pids = [1234, 1235, 1236]; // ID'шники параграфов.
$paragraph_storage = \Drupal::entityTypeManager()->getStorage('paragraph');
$paragraphs = $paragraph_storage->loadMultiple($pids );
foreach ($paragraphs as $paragraph) {
$node->field_my_paragraphs->appendItem($paragraph);
}
// Не забыть сохранить сущность ноды.
$node->save();
...
?>
А где указываются ИДшники нод в коде?
Нигде. Приведён типичный частный пример с присоединением параграфов к ранее загруженной ноде
$node
. Если нужно загружать ещё и ноды, то конструкция, понятно, будет несколько сложнее. ТипаNode::loadMultiple([1, 2, 3, 4, 5, ...])
и далее - цикл.Может быть тебе нужен Paragraph Library?
Может быть. Но тогда вопрос будет: "Как присоденить к Paragraph Library Item уже созданные параграфы"
Там кнопка есть "Promote to library"
А где эта эта кнопка? При редактировании ноды с имеющимся параграфом? Не вижу.
Надо сначала в типе параграфа указать, что их можно добавлять в библиотеку
Понял. Работает. Думаю где нибудь мне это пригодится.
Даже если получится массово загрузить параграфы в library items, все равно будет проблема загрузить library items к нодам. Т.к. с feeds оно из каробки пока не дружит.