Помогите реализовать загрузку файла(изображение) и дальнейшее использование его пути

Главные вкладки

Аватар пользователя na4aaa na4aaa 12 ноября 2013 в 9:11

У меня есть переменная в theme.info
settings[banner][1][path] = img/banner/1jpg

Мне нужно изменять ее через страницу настроек темы с помощью FormAPI
Я загружаю изображение с помощью managed_file... и дальше полный тупик... не могу додуматься что нужно сделать.

примерный алгоритм
загрузка через managed_file -> Жмем Закачать -> Выдираем путь изображение -> Вставляем в переменную в файле theme.info

Комментарии

Аватар пользователя Niklan Niklan 12 ноября 2013 в 11:05
1

У меня так сделано.
Фишка в том, что в 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');
    }
  }
?>
Аватар пользователя na4aaa na4aaa 12 ноября 2013 в 15:43

Дело в том что я не могу понять по какому алгоритму идет сохранение файла

"Niklan" wrote:
  // Сохраняем картинку, если ей присвоен статус "временно".
  $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-формы?