あなただけのフォームにハンドラを提出し、あなたがそこからfid
をつかむことができますカスタムを追加する必要があります:あなたはvariable_get('greytheme_home_img', '')
を使用しないのはなぜ
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
私はカスタムモジュールに書かなければなりませんでした。テーマ設定の送信時に_any_テーマファイル。本質的に1つの機能を持つモジュールを書く必要があることはばかげているようですが、私はそれを動作させました。 – Karew