당신은 단지 사용자가 폼에 핸들러를 제출 추가 할 필요가
, 당신은 거기에서 fid
을 잡아 수 있습니다
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"),
),
);
$form['#submit'][] = 'greytheme_system_theme_settings_form_submit';
}
function greytheme_system_theme_settings_form_submit(&$form, &$form_state) {
$fid = $form_state['values']['greytheme_home_img'];
$file = file_load($fid);
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
}
Drupal은'greytheme_system_theme_settings_form_submit()'을 호출하기 전에 theme-settings.php를 요구하지 않아 치명적인 결과를 낳습니다. 어디에서'greytheme_system_theme_settings_form_submit()'을 선언해야합니까? – Karew
'template.php'로 가겠다. 작동하지 않는다면 아마 사용자 정의 모듈에 넣어야 할 것이다. – Clive
Drupal이로드되지 않는 것처럼 사용자 정의 모듈에 작성해야했다. 테마 설정 제출시 _any_ 테마 파일. 근본적으로 하나의 기능을 가진 모듈을 작성해야한다는 어리석은 생각이 들지만 작동하도록했습니다. – Karew