Невозможно получить данные конфигурации блока в режиме черновика компонента компоновщика. [Друпал 9 и 10]
Привет, я пытаюсь получить конфигурацию блока компонента компоновщика, сохраненную в черновом режиме в контроллере, но почему-то это не работает.
В следующем коде я пытаюсь получить данные из режима публикации и режима черновика.
Опубликованный файл работает, но данные режима черновика не работают.
Вот мой код:
$source_node_id = $pid;
$source_node = $this->entityTypeManager->getStorage('node')->load($source_node_id);
$source_node_title = $source_node->getTitle();
$source_layout = $source_node->get('layout_builder__layout')->getValue();
$response = 0;
if (!empty($source_layout)) {
foreach ($source_layout as $section) {
if (isset($section['section'])) {
$components = $section['section']->getComponents();
foreach ($components as $component) {
if ($component instanceof SectionComponent && $component->getPluginId() === 'retailers_block') {
$theme_configuration_block_config = $component->get('configuration');
}
}
$ret_content = [];
$pv = [];
$i = 0;
foreach ($theme_configuration_block_config['retailers'] as $ret) {
if ($ret['retailer_data'] != 'none') {
$retailers = $this->entityTypeManager->getStorage('node')->load($ret['retailer_data']);
if ($retailers) {
$media_id = $retailers->field_recipe_image->first()->target_id;
$media_params = $this->mediaHelper->getMediaParametersById($media_id);
$imageUrl = (string) $media_params['src'];
$ret_content[$i]['title'] = $retailers->title->value;
$ret_content[$i]['image'] = $imageUrl;
$ret_content[$i]['pvariants'] = '';
if (isset($ret['product_variant_data']) && !empty($ret['product_variant_data']) && $pvid != NULL) {
$ret_content[$i]['pvariants'] = $ret['product_variant_data'];
}
if ($ret['select_url']) {
$ret_content[$i]['url'] = $ret['extra_url'];
}
else {
$ret_content[$i]['url'] = $retailers->field_retailer_url->value;
}
if (isset($ret_content[$i]['pvariants']) && !empty($ret_content[$i]['pvariants'])) {
$pos = array_search('0', $ret_content[$i]['pvariants']);
if ($pos !== FALSE) {
unset($ret_content[$i]['pvariants'][$pos]);
}
$pv[$i] = $ret_content[$i]['pvariants'];
}
}
}
$i++;
}
$response = 1;
}
}
$arrr = [];
if (!empty($pv)) {
$result = [];
foreach ($pv as $arr) {
$result = array_merge($result, $arr);
}
$array_main = array_unique($result, SORT_REGULAR);
foreach ($array_main as $value) {
$arrr[$value] = $this->getparents($value, $pv);
}
}
if (!empty($arrr)) {
$new_retailers = [];
$j = 0;
foreach ($arrr as $pkey => $p) {
if ($pkey == $pvid) {
foreach ($p as $pt) {
$new_retailers[$j] = $ret_content[$pt];
$j++;
}
}
}
$ret_content = $new_retailers;
}
$popup_content = [
'ptitle' => $source_node_title,
'retailers' => $ret_content,
'response' => $response,
'variants' => $arrr,
];
}
Я изо всех сил старался разобраться в этом, но ничего не помогло. Пожалуйста, помогите мне решить эту проблему.