Рейтинг:0

Управляемый файл в конфигурации темы не сохраняется

флаг zw

В настройках моей темы в разделе «admin/appearance/settings/mytheme» я пытаюсь добавить поле изображения.

Я добавил следующее в mytheme.theme

function mytheme_form_system_theme_settings_alter(&$form, Drupal\Core\Form\FormStateInterface $form_state) {
  $form['mytheme_settings']['footer_info']['footer_image'] = массив(
    '#type' => 'managed_file',
    '#title' => 'изображение нижнего колонтитула',
    '#name' => 'footer_file',
    '#default_value' => theme_get_setting('footer_image', 'mytheme'),
    '#upload_location' => 'public://'
  );
}

Это создает поле файла на странице настроек темы. Когда я загружаю поле сохраняется в моих общедоступных файлах

Сейчас я пытаюсь отобразить этот файл в шаблоне ветки.

Я добавляю следующее в mytheme.theme, чтобы убрать переменную

функция mytheme_preprocess_page(&$variables) {
  $variables['footer_image'] = theme_get_setting('footer_image','mytheme');
}

Затем добавьте {{нижнее_изображение}} в шаблон, однако файл не отображается.

Как мне назвать файл, который я загрузил, в свой собственный шаблон темы. Спасибо

Редактировать.

После поиска я обнаружил, что файл загружается, но файл удаляется.

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

leymannx avatar
флаг ne
Отвечает ли это на ваш вопрос? [Будет ли мой управляемый файл удален?](https://drupal.stackexchange.com/questions/277946/will-my-managed-file-get-deleted)
leymannx avatar
флаг ne
Вопрос другой, но ответ правильный.
Рейтинг:1
флаг us

hook_form_system_theme_settings_alter() необходимо также добавить обработчик отправки для обработки управляемого файла. В ядре Drupal единственный хук, реализуемый тестовым модулем, но код такой же, как и в обычном модуле. (Я не показывал все элементы формы, добавленные из хука, код взят из test_theme_settings_form_system_theme_settings_submit().)

функция test_theme_settings_form_system_theme_settings_alter(&$form, FormStateInterface $form_state) {
  $ форма ['пользовательский_логотип'] = [
    '#type' => 'managed_file',
    '#title' => t('Вторичный логотип.'),
    '#default_value' => theme_get_setting('custom_logo'),
    '#progress_indicator' => 'бар',
    '#progress_message' => t('Пожалуйста, подождите...'),
    '#upload_location' => 'public://тест',
    '#upload_validators' => [
      'file_validate_extensions' => [
        'gif png jpg jpeg',
      ],
    ],
  ];

  $form['#submit'][] = 'test_theme_settings_form_system_theme_settings_submit';
}

функция test_theme_settings_form_system_theme_settings_submit(&$form, FormStateInterface $form_state) {
  если ($file_id = $form_state->getValue(['custom_logo', '0'])) {
    $file = File::load($file_id);
    $файл->setPermanent();
    $файл->сохранить();
  }
}

Если бы управляемый файл не был установлен как постоянный, он был бы вскоре удален.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.