В Drupal 7 у меня есть тема со следующим кодом в theme-settings.php:
function greytheme_form_system_theme_settings_alter(&$form, $form_state)
{
$form["greytheme_home_img"] = array(
'#type' => 'managed_file',
'#title' => t('Home Page Image'),
'#description' => t("Home page image to be used in the ribbon."),
// fileID (fid) used to display the file later
'#default_value' => variable_get('greytheme_home_img', ''),
'#upload_location' => 'public://homeimg/',
'#upload_validators' => array(
'file_validate_extensions' => array("png jpg jpeg gif"),
),
);
}
Это позволит мне загрузить и проверить изображение на экране настроек внешнего вида для этой темы.
Файл записывается в файловую систему, как и ожидалось. Тем не менее, загрузка файла не помечена FILE_STATUS_PERMANENT
в базе данных, поэтому cronjob позднее сметет его. Как «перехватить» результаты загрузки этого файла, чтобы я мог установить FILE_STATUS_PERMANENT
и получить fid
объекта managed_file
? У меня такое ощущение, что это как-то связано с system_theme_settings_submit () , но я не уверен, что нужно переопределить.