В вашем хуке 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'),
),
);
Это сохранит идентификатор файла в вашей переменной settigns 'background_file' вашей темы, обратите внимание, что я установил место загрузки на тему / фоны, это будет внутри вашей папки с файлами.
Наконец, вы получите полный URL-адрес файла с file_create_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
person
imekinox
schedule
30.08.2012