LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2012, 20:39:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: [Решено] Автогенерация превьюшки-лого автоматически.  (Прочитано 2487 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« : 27.09.2010, 17:36:34 »

Считаю жестоким заставлять пользователей, добавляющих элементы в каталог, не просто загружать картинку-фото, а еще и ресайзить ее под мои требования для получения превьюшки, отображаемой на v-card. Можно ли автоматизировать этот процесс? Т.е. пользователь добавляет только большую фотку, основную, а мелкая генерируется автоматом из большой ресайзом и прописывается к этой записи. Было бы очень полезно, на мой взгляд. Не думаю, что никому больше не приходила в голову такая идейка. Wink
« Последнее редактирование: 04.10.2010, 23:15:16 от mystique » Записан
Lord Glue
Завсегдатай
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #1 : 28.09.2010, 14:50:42 »

да, отключить использование картинок и лого, поставить gallery plugin, выводить в vc-шаблоне первую картинку из галереи.
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #2 : 28.09.2010, 14:53:41 »

Спасибо! Попробую!
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #3 : 29.09.2010, 21:44:04 »

Не прокатило. ;( На v-card стало все хорошо, но испортилось на подробном просмотре. На подробном-то получились тоже мелкие фотки, разворачивающиеся до больших кликом по ним. А нужно, чтобы на подробном просмотре сразу были большие. И некликабельные. Это возможно?

А еще у меня появилась мысль. Хочу повесить функцию ресайза картинки на сохранение большой картинки. Что-то вроде этого: http://www.zhogov.ru/script_30.html т.е. как только пользователь загружает большую картинку, в момент ее сохранения запускается этот скрипт и ресайзит маленькую картинку в новый файл. После чего прописывает путь к ней в базу в поле, предназначенное для мелкого лого. Только вот во внутренности SOBI2 боюсь лезть. Подскажите пожалуйста, как это туда вкрячить?
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #4 : 03.10.2010, 17:21:18 »

Кажется, проблему решил еще проще. Wink Что я сделал?

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 с радостью выслушаю, где это можно было сделать более красиво. И нет ли в таком решении подводных камней? Wink
« Последнее редактирование: 04.10.2010, 23:13:18 от mystique » Записан
aivas
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 49


« Ответ #5 : 04.10.2010, 19:27:13 »

mystique Все работает, отличное решение! Только, у меня вместо этого:
NewSobi
Была функция saveSobi.

И предложение, для полной доработки. Еще бы из админки когда правим или добавляем мателиал, чтобы эта функция тоже работало! А то щас из админки не работает.
mystique сделать можно?)


Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #6 : 04.10.2010, 23:12:43 »

Точно! Не NewSobi, а SaveSobi и UpdateSobi. Это опечатка. Wink Поправил в исходним сообщении, чтобы больше никто не споткнулся на этом.

А чтобы из админки то же самое работало, думаю, нужно править подобный же класс, но не в /components/sobi, а в administrator/components/sobi. Но нужно искать. Сам я еще туда не лазил, т.к. просто не нужно было. Если критично, попробую в выходные покопаться. Надеюсь, не горит? Wink

PS И все-таки хотелось бы услышать мнение мастеров PHP. Нигде ли я ничего не испортил такой доработочкой? Ничего таким образом не сломал? На первый взгляд не должен бы. Но кто знает...
Записан
terveg
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 273


ставь "+" руки не отсохнут


« Ответ #7 : 09.11.2010, 19:59:39 »

чтот я не понял-пользователь загружает картинку или логотип в Вашем случае?
у меня похожая задача сейчас-нужно брать картинку пользователя и ресайзить ее таким образом, чтобы в v-card была маленькая копия большой картинки, а в details view большая.
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #8 : 10.11.2010, 00:15:31 »

Именно это и делается. Пользователь загружает только большую картинку. Лого для v-card генерится само. Автоматом.

По-умолчанию пользователь должен был бы загрузить 2 картинки. В моем решении пользователь загружает только большую картинку. А она уже автоматом ресайзится и в уменьшенном виде автоматом прописывается для отображения на v-card. Пользователю не нужно самому ресайзить ничего. Это делается автоматом. И не нужно грузить 2 картинки.

Пользуйтесь на здоровье! Wink
Записан
aivas
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 49


« Ответ #9 : 11.11.2010, 21:25:14 »

mystique над админкой не думал?
Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #10 : 12.11.2010, 12:24:47 »

mystique над админкой не думал?

Еще нет. Времени не было. Но на этих выходных займусь. Покопаюсь обязательно. надеюсь, что к понедельнику будет готовое решение. Wink
Записан
terveg
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 273


ставь "+" руки не отсохнут


« Ответ #11 : 15.11.2010, 23:53:53 »

качество по видимому устанавливается здесь для jpeg
jpeg_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 Offline

Пол: Мужской
Сообщений: 273


ставь "+" руки не отсохнут


« Ответ #12 : 16.11.2010, 00:06:02 »

Цитировать
Но на этих выходных займусь
уж как бы прошли выходные Azn
Записан
terveg
Давно я тут
****

Репутация: +17/-0
Offline 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>&nbsp;";
         }
      }
« Последнее редактирование: 16.11.2010, 02:04:56 от terveg » Записан
mystique
Давно я тут
****

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 279



« Ответ #14 : 16.11.2010, 10:08:02 »

уж как бы прошли выходные Azn

Звиняйте, куцие выходные какие-то были... В ближайшие НОРМАЛЬНЫЕ, ПОЛНОЦЕННЫЕ выходные. Wink Заодно и файлики выложу. Чтобы не приходилось руками каждому патчить. А просто файлик подложил - и все. Wink
Записан
fomanza
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline 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 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."&nbsp;<br/>";
}

To look like this:

/*else if($scope == "ico") {*/
  $this->icon = $this->resampleImage( $filename, "ico", $success );
  $msg = $msg._SOBI2_SAVE_UPLOAD_ICO_OK."&nbsp;<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 Offline

Пол: Мужской
Сообщений: 16



« Ответ #17 : 02.02.2011, 15:21:09 »

вот еще такой вариант есть с офф форума
Вот этот вариант прост и работает. +
Записан
svoinov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #18 : 10.02.2011, 10:02:11 »

Да действительно работает! Но у меня остался еще один вопрос.... можно ли сделать так, что бы иконка которая выводится в V-card маштабировалась (вписывалась) в заданный размер. Например в квадрат, как это реализовано в SOBI2 по умолчанию. А то получается, что иконки разные, есть горизонтальные и вертикальные. Т.е. программа вписывает их в параметр, но сохраняет пропорции изображения и не обрезает лишнее.
Заранее спасибо!           
Записан
terveg
Давно я тут
****

Репутация: +17/-0
Offline 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 Offline

Сообщений: 4


« Ответ #20 : 11.02.2011, 16:42:17 »

Спасибо, но все ровно осталось одна задачка 
Как сделать, что бы фото не искажалось, какдрировалось по ширине или высоте, но при этом обрезалось лишнее ...?  У меня квадратные аватарки, при таком способе фотки сжимаются по широкой стороне   
Записан
terveg
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 273


ставь "+" руки не отсохнут


« Ответ #21 : 19.02.2011, 05:26:22 »

ухуу так тут уже целое дело! уверен что оно того стоит? или ещ + несколько мегабайт оперативки на виртуалхосте захавает,  а толку то немного...
сам думал как то...искал в инете куски кода на офф сайте PHP...так дальше обломался
Записан
Sedoy
Support Team
*****

Репутация: +77/-10
Offline 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 Offline

Пол: Мужской
Сообщений: 568


добрый пандо


« Ответ #23 : 29.01.2012, 11:54:36 »

проще отредактировать модули, чем заменять значение $ico. Неизвестно откуда модуль его берет - из компонента или сам достает из БД.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet