mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« : 27.09.2010, 17:36:34 » |
|
Считаю жестоким заставлять пользователей, добавляющих элементы в каталог, не просто загружать картинку-фото, а еще и ресайзить ее под мои требования для получения превьюшки, отображаемой на v-card. Можно ли автоматизировать этот процесс? Т.е. пользователь добавляет только большую фотку, основную, а мелкая генерируется автоматом из большой ресайзом и прописывается к этой записи. Было бы очень полезно, на мой взгляд. Не думаю, что никому больше не приходила в голову такая идейка. 
|
|
|
|
« Последнее редактирование: 04.10.2010, 23:15:16 от mystique »
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
Offline
Пол: 
Сообщений: 568
добрый пандо
|
 |
« Ответ #1 : 28.09.2010, 14:50:42 » |
|
да, отключить использование картинок и лого, поставить gallery plugin, выводить в vc-шаблоне первую картинку из галереи.
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #2 : 28.09.2010, 14:53:41 » |
|
Спасибо! Попробую!
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #3 : 29.09.2010, 21:44:04 » |
|
Не прокатило. ;( На v-card стало все хорошо, но испортилось на подробном просмотре. На подробном-то получились тоже мелкие фотки, разворачивающиеся до больших кликом по ним. А нужно, чтобы на подробном просмотре сразу были большие. И некликабельные. Это возможно? А еще у меня появилась мысль. Хочу повесить функцию ресайза картинки на сохранение большой картинки. Что-то вроде этого: http://www.zhogov.ru/script_30.html т.е. как только пользователь загружает большую картинку, в момент ее сохранения запускается этот скрипт и ресайзит маленькую картинку в новый файл. После чего прописывает путь к ней в базу в поле, предназначенное для мелкого лого. Только вот во внутренности SOBI2 боюсь лезть. Подскажите пожалуйста, как это туда вкрячить?
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #4 : 03.10.2010, 17:21:18 » |
|
Кажется, проблему решил еще проще.  Что я сделал? 1) В SOBI2.class.php в функциях SaveSobi и UpdateSobi: около комментария /* icon file upload handling */ добавил строчку $_FILES['sobi2Ico'] = $_FILES['sobi2Img']; и убрал смотрелку на используемость иконок. /* if(isset( $_FILES['sobi2Ico']) && is_array($_FILES['sobi2Ico']) && $config->allowUsingIco ) { */ if(isset( $_FILES['sobi2Ico']) && is_array($_FILES['sobi2Ico']) ) {
2) В SOBI2.class.php в функции GetImage: if(@move_uploaded_file($file['tmp_name'], _SOBI_CMSROOT.$imagesFolder.$filename)){ заменил на if($scope == "img") { $res = @copy($file['tmp_name'], _SOBI_CMSROOT.$imagesFolder.$filename); } else { $res = @move_uploaded_file($file['tmp_name'], _SOBI_CMSROOT.$imagesFolder.$filename);
}
/*if(@move_uploaded_file($file['tmp_name'], _SOBI_CMSROOT.$imagesFolder.$filename)){*/ if($res){
Что я этим получил? Первым пунктом я копирую имя файла, который загружает пользователь в виде картинки, в поле, предназначенное для ноготка (мелкой картинки). Пользователь сам этих данных не вводит и даже может не видеть поле для ввода имени файла "ноготка". Таким образом мы сделали это действие прозрачным для пользователя. Вторым действием я в функции реального сохранения файла и записи в базу я вместо принудительного переноса загруженного файла анализирую, для какого файла выполняется действие. Эта функция будет вызвана дважды. Один раз для основной картинки, второй раз для "ноготка". Поскольку файл у нас реально один, то мы должны для первого вызова функции только копировать файл. А для второго вызова уже переносить его. Проверил. Работает. Сохраняются все настройки (размеры ресайза "ноготков") заполшняются в той же админке, в тех же полях. Желающие могут пользоваться. А мастеров PHP с радостью выслушаю, где это можно было сделать более красиво. И нет ли в таком решении подводных камней? 
|
|
|
|
« Последнее редактирование: 04.10.2010, 23:13:18 от mystique »
|
Записан
|
|
|
|
aivas
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 49
|
 |
« Ответ #5 : 04.10.2010, 19:27:13 » |
|
mystique Все работает, отличное решение! Только, у меня вместо этого: NewSobi
Была функция saveSobi. И предложение, для полной доработки. Еще бы из админки когда правим или добавляем мателиал, чтобы эта функция тоже работало! А то щас из админки не работает. mystique сделать можно?)
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #6 : 04.10.2010, 23:12:43 » |
|
Точно! Не NewSobi, а SaveSobi и UpdateSobi. Это опечатка.  Поправил в исходним сообщении, чтобы больше никто не споткнулся на этом. А чтобы из админки то же самое работало, думаю, нужно править подобный же класс, но не в /components/sobi, а в administrator/components/sobi. Но нужно искать. Сам я еще туда не лазил, т.к. просто не нужно было. Если критично, попробую в выходные покопаться. Надеюсь, не горит?  PS И все-таки хотелось бы услышать мнение мастеров PHP. Нигде ли я ничего не испортил такой доработочкой? Ничего таким образом не сломал? На первый взгляд не должен бы. Но кто знает...
|
|
|
|
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #7 : 09.11.2010, 19:59:39 » |
|
чтот я не понял-пользователь загружает картинку или логотип в Вашем случае? у меня похожая задача сейчас-нужно брать картинку пользователя и ресайзить ее таким образом, чтобы в v-card была маленькая копия большой картинки, а в details view большая.
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #8 : 10.11.2010, 00:15:31 » |
|
Именно это и делается. Пользователь загружает только большую картинку. Лого для v-card генерится само. Автоматом. По-умолчанию пользователь должен был бы загрузить 2 картинки. В моем решении пользователь загружает только большую картинку. А она уже автоматом ресайзится и в уменьшенном виде автоматом прописывается для отображения на v-card. Пользователю не нужно самому ресайзить ничего. Это делается автоматом. И не нужно грузить 2 картинки. Пользуйтесь на здоровье! 
|
|
|
|
|
Записан
|
|
|
|
aivas
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 49
|
 |
« Ответ #9 : 11.11.2010, 21:25:14 » |
|
mystique над админкой не думал?
|
|
|
|
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #10 : 12.11.2010, 12:24:47 » |
|
mystique над админкой не думал?
Еще нет. Времени не было. Но на этих выходных займусь. Покопаюсь обязательно. надеюсь, что к понедельнику будет готовое решение. 
|
|
|
|
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #11 : 15.11.2010, 23:53:53 » |
|
качество по видимому устанавливается здесь для jpegjpeg_image_quality = "75" в components/com_sobi2/includes/inc/config.ini или в коде примерно 1690 строка imagejpeg($image_p, _SOBI_CMSROOT.$imagesFolder.$filename, $config->key( "general", "jpeg_image_quality", 85 )); а для остальных типов файлов? png, gif, jpg ******** Общие параметры/Отображать иконку при просмотре категорий-ДА Параметры добавления/Разрешить добавлять иконки-ДА ******** Масштабировать иконку/Ширина:****px. Высота:****px. выставляется здесь
|
|
|
|
« Последнее редактирование: 16.11.2010, 02:12:06 от terveg »
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #12 : 16.11.2010, 00:06:02 » |
|
Но на этих выходных займусь уж как бы прошли выходные 
|
|
|
|
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #13 : 16.11.2010, 00:25:19 » |
|
Еще бы из админки когда правим или добавляем мателиал, чтобы эта функция тоже работало! А то щас из админки не работает.
почему же не работает -у меня работает без изменений, или я снова туплю о.О а вот модуль sobi-top-rated не выводит иконки $icon = null; if($entryicon) { if($s_result->icon && file_exists("{$config->absolutePath}/images/com_sobi2/clients/{$s_result->icon}")) { $icon = "<a href=\"{$url}\" title=\"{$myFullTitle}\"><img src=\"{$config->liveSite}/images/com_sobi2/clients/{$s_result->icon}\" title=\"{$myFullTitle}\" alt=\"{$myFullTitle}\"/></a> "; } }
|
|
|
|
« Последнее редактирование: 16.11.2010, 02:04:56 от terveg »
|
Записан
|
|
|
|
mystique
Давно я тут
  
Репутация: +4/-0
Offline
Пол: 
Сообщений: 279
|
 |
« Ответ #14 : 16.11.2010, 10:08:02 » |
|
уж как бы прошли выходные  Звиняйте, куцие выходные какие-то были... В ближайшие НОРМАЛЬНЫЕ, ПОЛНОЦЕННЫЕ выходные.  Заодно и файлики выложу. Чтобы не приходилось руками каждому патчить. А просто файлик подложил - и все. 
|
|
|
|
|
Записан
|
|
|
|
fomanza
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 83
|
 |
« Ответ #15 : 20.11.2010, 22:14:33 » |
|
Спасибо. Очень нуждался в этом, но есть один недочет, если я захочу отредактировать и поменять логотип и иконку, то мне придется их добавлять по отдельности, т.е добавить картинку к логотипу и добавить картинку к иконке, а не так как при первоначальном добавлении все сразу. И еще не нашел строку у себя if(isset( $_FILES['sobi2Ico']) && is_array($_FILES['sobi2Ico']) ) { может быть в этом дело?
|
|
|
|
« Последнее редактирование: 21.11.2010, 12:58:27 от fomanza »
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #16 : 22.11.2010, 13:43:47 » |
|
вот еще такой вариант есть с офф форума Ok I've made a really dirty hack for my own implementation which works for what I'm trying to do so here it is: In the file "joomla\components\com_sobi2\sobi2.class.php" I changed the following lines (within the getImage method) from this:
else if($scope == "ico") { $this->icon = $this->resampleImage( $filename, $scope, $success ); $msg = $msg._SOBI2_SAVE_UPLOAD_ICO_OK." <br/>"; }
To look like this:
/*else if($scope == "ico") {*/ $this->icon = $this->resampleImage( $filename, "ico", $success ); $msg = $msg._SOBI2_SAVE_UPLOAD_ICO_OK." <br/>"; /*}*/
(Just removes the "else if" check and hard-codes the scope variable to "ico")
Now your SOBI2 will auto generate a icon from the logo image! As I said, I know this is a hack but it works for me - so maybe it can help someone else
|
|
|
|
|
Записан
|
|
|
|
pass-off
Захожу иногда

Репутация: +1/-0
Offline
Пол: 
Сообщений: 16
|
 |
« Ответ #17 : 02.02.2011, 15:21:09 » |
|
вот еще такой вариант есть с офф форума
Вот этот вариант прост и работает. +
|
|
|
|
|
Записан
|
|
|
|
svoinov
Новичок
Репутация: +0/-0
Offline
Сообщений: 4
|
 |
« Ответ #18 : 10.02.2011, 10:02:11 » |
|
Да действительно работает! Но у меня остался еще один вопрос.... можно ли сделать так, что бы иконка которая выводится в V-card маштабировалась (вписывалась) в заданный размер. Например в квадрат, как это реализовано в SOBI2 по умолчанию. А то получается, что иконки разные, есть горизонтальные и вертикальные. Т.е. программа вписывает их в параметр, но сохраняет пропорции изображения и не обрезает лишнее. Заранее спасибо!
|
|
|
|
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #19 : 11.02.2011, 01:18:24 » |
|
к примеру так у меня выводится в VCARD <div class="foto"> <?php if ($ico) {echo $ico;} else {echo '<div style="text-align:center;border:1px;border-style:dashed;border-color:grey;height:110px;width:160px;color:#bbb"><div style="margin-top:5px"><span style="color:grey">НЕТ ФОТО</span><br /></div></div>';} ?> </div> а в файле com_sobi2.css или шаблоне такое .foto img{border:1px solid #ccc;height:100px;padding:5px;width:150px} .foto img:hover{border:1px solid #ffd000}
|
|
|
|
|
Записан
|
|
|
|
svoinov
Новичок
Репутация: +0/-0
Offline
Сообщений: 4
|
 |
« Ответ #20 : 11.02.2011, 16:42:17 » |
|
Спасибо, но все ровно осталось одна задачка Как сделать, что бы фото не искажалось, какдрировалось по ширине или высоте, но при этом обрезалось лишнее ...? У меня квадратные аватарки, при таком способе фотки сжимаются по широкой стороне
|
|
|
|
|
Записан
|
|
|
|
terveg
Давно я тут
  
Репутация: +17/-0
Offline
Пол: 
Сообщений: 273
ставь "+" руки не отсохнут
|
 |
« Ответ #21 : 19.02.2011, 05:26:22 » |
|
ухуу так тут уже целое дело! уверен что оно того стоит? или ещ + несколько мегабайт оперативки на виртуалхосте захавает, а толку то немного... сам думал как то...искал в инете куски кода на офф сайте PHP...так дальше обломался
|
|
|
|
|
Записан
|
|
|
|
Sedoy
Support Team
   
Репутация: +77/-10
Offline
Пол: 
Сообщений: 1084
Интересно,в какой кодировке пишут врачи?
|
 |
« Ответ #22 : 26.01.2012, 13:07:33 » |
|
да, отключить использование картинок и лого, поставить gallery plugin, выводить в vc-шаблоне первую картинку из галереи. по мне так это самое тру решение вывести <?php echo $ico; ?> присвоив ему каким то образом значение <?php echo $plugins["gallery"]; ?> это для того чтоб использовать модули sobi которые используют вывод картинки беря ico только у mod_adscroller для sobi есть настройка выбора картинки (ico или gallery) у остальных нет
|
|
|
|
|
Записан
|
|
|
|
Lord Glue
Завсегдатай
   
Репутация: +65/-0
Offline
Пол: 
Сообщений: 568
добрый пандо
|
 |
« Ответ #23 : 29.01.2012, 11:54:36 » |
|
проще отредактировать модули, чем заменять значение $ico. Неизвестно откуда модуль его берет - из компонента или сам достает из БД.
|
|
|
|
|
Записан
|
|
|
|
|