Невозможно получить данные конфигурации блока в режиме черновика компонента компоновщика. [Друпал 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,
      ];
    } 

Я изо всех сил старался разобраться в этом, но ничего не помогло. Пожалуйста, помогите мне решить эту проблему.

0 ответов

Другие вопросы по тегам