У меня есть переменная в theme.info
settings[banner][1][path] = img/banner/1jpg
Мне нужно изменять ее через страницу настроек темы с помощью FormAPI
Я загружаю изображение с помощью managed_file... и дальше полный тупик... не могу додуматься что нужно сделать.
примерный алгоритм
загрузка через managed_file -> Жмем Закачать -> Выдираем путь изображение -> Вставляем в переменную в файле theme.info
Комментарии
В бд хранить настройки не пробовали?
У меня так сделано.
Фишка в том, что в 7 есть баг и файл автоматически не сохраняется после субмита формы. Нужно либо писать модуль и в нем альтерить субмит темы и сохранять файл, либо так как сделал я под файлом аплоада. Но тут есть беда в том, что каждый раз картинку надо перезагружать если хочется сохранить настройки темы. Пока не задумывался как решить. Временный костыль стоит, надо будет подумать.
<?php
// Сохраняем картинку, если ей присвоен статус "временно".
$form['frontpage']['frontpage_image'] = array(
'#title' => "Картинка",
'#type' => 'managed_file',
'#required' => FALSE,
'#description' => "Картинка которая будет отображаться слева от промо-текста на главной.",
'#default_value' => theme_get_setting('frontpage_image'),
'#upload_location' => 'public://uploads/',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
),
);
$image_custom_index = theme_get_setting('frontpage_image');
if ($image_custom_index) {
$fid = theme_get_setting('frontpage_image');
$file = file_load($fid);
if ($file->status == 0) {
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
drupal_set_message('Картинка успешно сохранена.', 'status');
}
}
?>
Дело в том что я не могу понять по какому алгоритму идет сохранение файла
... Данный участок кода нужно просто вставить в theme-settings.php? Или в submit-формы?
Все что я написал нужно вставить в theme-settings. Я код скопировал, они прям так друг за другом и идут.