Несколько фотографий для объявления

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Необходимо сделать возможность добавления нескольких фотографий для объявления.

#1 5 июля 2012 в 21:42
Необходимо сделать возможность добавления нескольких фотографий для объявления.
Что и где нужно подкорректировать? smile
#2 5 июля 2012 в 22:24
В новой версии вроде бы Fuze хотел сделать, пока никто не реализовал.
#3 5 июля 2012 в 22:35
Хорошо, но все же, как при небольших знаиях можно решить этот вопрос самому, может с коде чего нибудь добавить? joke
#4 5 июля 2012 в 23:54
какие есть варианты решения проблемы? look
#5 6 июля 2012 в 00:13
Олег Васильевич
Где скачать?
#6 6 июля 2012 в 00:32
Что есть из бесплатного? look
#7 6 июля 2012 в 18:19


Что есть из бесплатного? look

hasio
Не знаю, к сожалению…
#8 6 июля 2012 в 19:18
Из бесплатного ничего нету (сам искал) как вариант купить улучшеную доску объявлений от Maxisoft'a. Скоро будет новая еще более улучшеная версия
#9 7 июля 2012 в 01:35
Ждем еще пару дней, может кто-то еще свежую индейку подкинет, если никого не будет, закрываем тему, и будем ждать Релиза 2.0 v
#10 8 июля 2012 в 12:54
hasio
))))))))
Лично я в полном восторге! ПОДКОРРЕКТИРОВАТЬ!!!
Подкорретировать — это когда надо в заголовка синие буквы на красные поменять!
А тут полдня мудохаться придётся!!!
#11 8 июля 2012 в 13:12
Переделываю Доску объявлений под себя. Понадобилась функция, описанная в шапке. Instantcms 1.9. Вот что получилось:

Добавление:


Как реализовано:

1. Зайдем в БД сайта. Создадим в таблице `cms_board_items` поле `photos`

  1. ALTER TABLE `cms_board_items` ADD `photos` VARCHAR(255) NOT NULL
2. Далее находим в корне сайта /components/board/fronted.php
находим строки:
  1.  
  2. if($cat['is_photos']){
  3. // Загружаем фото
  4. $file = $model->uploadPhoto('', $cat);
  5. } else {
  6. $file['filename'] = '';
  7. cmsCore::addSessionMessage($_LANG['INFO_CAT_NO_PHOTO'], 'info');
  8. }
  9.  
Заменяем на:
  1.  
  2. if($cat['is_photos']){
  3. // Загружаем фото
  4. $file = $model->uploadPhoto('', $cat, 'Filedata');
  5. $photos='';
  6. $i=1;
  7. foreach($_FILES as $key=>$value){
  8. if($key!='Filedata'){
  9. $photo=$model->uploadPhoto('', $cat, $key);
  10. if($i!=1){$photos.=', ';}
  11. $photos.=$photo['filename'];
  12. $i++;
  13. }}
  14. } else {
  15. $file['filename'] = '';
  16. cmsCore::addSessionMessage($_LANG['INFO_CAT_NO_PHOTO'], 'info');
  17. }
  18.  
Ниже, после строк
  1.  
  2. 'pubdays'=>$pubdays,
  3. 'published'=>$published,
  4. 'file'=>$file['filename']
  5.  
добавляем:

  1. , 'photos'=>$photos

Так же:

  1.  
  2. $smarty = $inCore->initSmarty('components', 'com_board_item.tpl');
  3. $smarty->assign('item', $item);
  4. $smarty->assign('cfg', $model->config);
  5. $smarty->assign('user_id', $inUser->id);
  6. $smarty->assign('is_admin', $inUser->is_admin);
  7. $smarty->assign('is_moder', $model->is_moderator_by_group);
  8. $smarty->display('com_board_item.tpl');
меняем на

  1.  
  2. $photos = explode(', ', $item['photos']);
  3. array_pop($photos);
  4. $smarty = $inCore->initSmarty('components', 'com_board_item.tpl');
  5. $smarty->assign('item', $item);
  6. $smarty->assign('photos', $photos);
  7. $smarty->assign('cfg', $model->config);
  8. $smarty->assign('user_id', $inUser->id);
  9. $smarty->assign('is_admin', $inUser->is_admin);
  10. $smarty->assign('is_moder', $model->is_moderator_by_group);
  11. $smarty->display('com_board_item.tpl');
  12.  
3. Переходим в model.php

Строки
  1.  
  2. public function uploadPhoto($old_file = '', $cat) {
  3.  
  4. // Загружаем класс загрузки фото
  5. $this->inCore->loadClass('upload_photo');
  6. $inUploadPhoto = cmsUploadPhoto::getInstance();
  7. // Выставляем конфигурационные параметры
  8. $inUploadPhoto->upload_dir = PATH.'/images/board/';
  9. $inUploadPhoto->small_size_w = $cat['thumb1'];
  10. $inUploadPhoto->medium_size_w = $cat['thumb2'];
  11. $inUploadPhoto->thumbsqr = $cat['thumbsqr'];
  12. $inUploadPhoto->is_watermark = $this->config['watermark'];
  13. // Процесс загрузки фото
  14. $file = $inUploadPhoto->uploadPhoto($old_file);
  15.  
  16. return $file;
  17.  
  18. }
  19.  
меняем на

  1.  
  2. public function uploadPhoto($old_file = '', $cat, $formname) {
  3.  
  4. // Загружаем класс загрузки фото
  5. $this->inCore->loadClass('upload_photo');
  6. $inUploadPhoto = cmsUploadPhoto::getInstance();
  7. // Выставляем конфигурационные параметры
  8. $inUploadPhoto->upload_dir = PATH.'/images/board/';
  9. $inUploadPhoto->small_size_w = $cat['thumb1'];
  10. $inUploadPhoto->medium_size_w = $cat['thumb2'];
  11. $inUploadPhoto->thumbsqr = $cat['thumbsqr'];
  12. $inUploadPhoto->is_watermark = $this->config['watermark'];
  13. // Процесс загрузки фото
  14. $file = $inUploadPhoto->uploadPhoto($old_file, $formname);
  15.  
  16. return $file;
  17.  
  18. }
  19.  
Находим строки

  1.  
  2. public function addRecord($item){
  3.  
  4. $inUser = cmsUser::getInstance();
  5. $item = cmsCore::callEvent('ADD_BOARD_RECORD', $item);
  6.  
  7. $sql = "INSERT INTO cms_board_items (category_id, user_id, obtype, title , content, formsdata, city, pubdate, pubdays, published, file, hits, ip)
  8. VALUES ({$item['category_id']}, {$item['user_id']}, '{$item['obtype']}', '{$item['title']}', '{$item['content']}', '{$item['formsdata']}',
  9. '{$item['city']}', NOW(), {$item['pubdays']}, {$item['published']}, '{$item['file']}', 0, INET_ATON('{$inUser->ip}'))";
  10.  
  11. $this->inDB->query($sql);
  12.  
  13. $item_id = $this->inDB->get_last_id('cms_board_items');
  14.  
  15. return $item_id ? $item_id : false;
  16. }
  17.  
  18.  
И меняем на

  1.  
  2. public function addRecord($item){
  3.  
  4. $inUser = cmsUser::getInstance();
  5. $item = cmsCore::callEvent('ADD_BOARD_RECORD', $item);
  6.  
  7. $sql = "INSERT INTO cms_board_items (category_id, user_id, obtype, title , content, formsdata, city, pubdate, pubdays, published, file, photos, hits, ip)
  8. VALUES ({$item['category_id']}, {$item['user_id']}, '{$item['obtype']}', '{$item['title']}', '{$item['content']}', '{$item['formsdata']}',
  9. '{$item['city']}', NOW(), {$item['pubdays']}, {$item['published']}, '{$item['photos']}', 0, INET_ATON('{$inUser->ip}'))";
  10.  
  11. $this->inDB->query($sql);
  12.  
  13. $item_id = $this->inDB->get_last_id('cms_board_items');
  14.  
  15. return $item_id ? $item_id : false;
  16. }
  17.  
  18.  

4. Переходим в корень сайта/core/classes/
находим файл upload_photo.class.php

всю функцию uploadPhoto изменяем на

  1.  
  2. public function uploadPhoto($old_file='', $formname='Filedata'){
  3.  
  4. // если каталог загрузки не определен, возвращаем ложь
  5. if (!$this->upload_dir) { return false; }
  6.  
  7. $inCore = cmsCore::getInstance();
  8.  
  9. if ($_FILES[$formname]['name']){
  10.  
  11. $inCore->includeGraphics();
  12.  
  13. $realfile = $this->inDB->escape_string($_FILES[$formname]['name']);
  14.  
  15. $path_parts = pathinfo($realfile);
  16. $ext = strtolower($path_parts['extension']);
  17.  
  18. // убираем расширение файла вместе с точкой
  19. $realfile = substr($realfile, 0, strrpos($realfile, '.'));
  20.  
  21. if ($ext != 'jpg' && $ext != 'jpeg' && $ext != 'gif' && $ext != 'png' && $ext != 'bmp') { return false; }
  22.  
  23. $filename = md5(time().$realfile).'.jpg';
#12 8 июля 2012 в 13:21
Извиняюсь за объемное сообщение.
#14 8 июля 2012 в 18:13
За принял участие в решении моей проблемы, Огромное спасибо CeeJay dance
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.