カスタムの背景画像をアップロードできるテーマを作成していますが、今は行き詰まっています。
theme-setting.phpを介してdrupal形式でFILEフィールドを適切に追加するにはどうすればよいですか?その後、テンプレートファイルでこのファイルへのパブリックURLを取得するにはどうすればよいですか??
カスタムの背景画像をアップロードできるテーマを作成していますが、今は行き詰まっています。
theme-setting.phpを介してdrupal形式でFILEフィールドを適切に追加するにはどうすればよいですか?その後、テンプレートファイルでこのファイルへのパブリックURLを取得するにはどうすればよいですか??
theme_form_system_theme_settings_alter フックに、次のフォーム要素を追加する必要があります。
$form['theme_settings']['background_file'] = array(
'#type' => 'managed_file',
'#title' => t('Background'),
'#required' => FALSE,
'#upload_location' => file_default_scheme() . '://theme/backgrounds/',
'#default_value' => theme_get_setting('background_file'),
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
),
);
これにより、ファイル ID がテーマ設定変数 'background_file' に保存されます。アップロード場所を theme/backgrounds に設定していることに注意してください。これはファイル フォルダー内になります。
最後に、file_create_url を使用してファイルへの完全な URL を取得します。
$fid = theme_get_setting('background_file');
$image_url = file_create_url(file_load($fid)->uri);
編集:
template.php で、theme_preprocess_page フックに変数を追加して、すべての tpl がアクセスできるようにすることができます。方法は次のとおりです。
function theme_preprocess_page(&$variables, $hook) {
$fid = theme_get_setting('background_file');
$variables['background_url'] = file_create_url(file_load($fid)->uri);
}
お役に立てれば!:D