0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 10601 Просмотров
*

Invisible_DEATH

  • Осваиваюсь на форуме
  • 38
  • 8 / 0
  • Joomla+K2=ЗЛО. Для этого есть Drupal...
Нужно как-то отменить сохранение изображений с разными размерами. В '/media/k2/items/cache' (def) сохраняется по 6 файлов разных размеров на 1 картинку материала, и еще оригинал в '../src'. И того около 1МБ на новость только 'Item image'. Поковырялся в '/administrator/components/com_k2/models/item.php', там можно просто отключить части кода, которые отвечают за обработку изображений. Безболезненно можно отключить только первое (XLarge), со следующими пропадает вывод изображения после отправки формы и оповещение о и наличии в материале... Но что-то мне подсказывает, что это должно отключаться через настройки. Должно, но нету :dry:Неужели все держат кучу ненужного хлама на сервере? Сейчас мне надо только XSmall и Small, их можно подставить вместо остальных в запросах '/components/com_k2/modelsitem(list).php', но нормально отменить размножение так и не смог :(
______________
Если закомментировать все секции обработки изображений (кроме нужных) в '/administrator/components/com_k2/models/item.php' (или добавить удаление ненужных после обработки), то результат не отображается и не показывает, что для материала есть изображение. Нужно наличие *_L.ext изображения. Если изменить имя сохраняемым изображениям с _S на _L (или сменить размер для L и использовать его как нужное вместо S), то не выводится thumb при показе результата в форме редактирования (там _S надо).  
----------------
Чтоб отображалась картинка в форме редактирования, нужно сменить ввод thumb'a с _S на имеющуюся картинку... Довольно таки гиморно и непрактично. Ведь должно быть нормальное решение...
« Последнее редактирование: 10.10.2011, 18:20:43 от staticlight »
*

Ghost_FX

  • Новичок
  • 9
  • 0 / 0
Вот как раз занялся проблемой этой в плотную. Пока что всё идёт "методом тыка".(лень мануалы читать)
Отключить в данном скрипте можно абсолютно ВСЁ. А насколько болезненно это будет - решать лично вам.
Выяснилось что картинки с припиской "_XL" используются в модуле с раскрытием миниатюр(js-скрипт, как я понимаю который по клику на миниатюру раскрывает экстра большое изображение).
А картинки с "_XS" для миниатюр, собственно.
Картинки с "_S" пометкой используются в админке для "предпросмотра" имеющегося изображения.
Для наших нужд мы отключили ресайз на _XL, ибо бывают мелкие изображения которые растягиваются в кубики ака пискселы на пол экрана. А также отключили запись для _L, _M и _Generic (по смыслу можно комментить весь блок, но это временное тестовое решение)
Код: php
if ($handle->uploaded) {

                //Image params
                $category = &JTable::getInstance('K2Category', 'Table');
                $category->load($row->catid);
                $cparams = new JParameter($category->params);

                if ($cparams->get('inheritFrom')) {
                    $masterCategoryID = $cparams->get('inheritFrom');
                    $query = "SELECT * FROM #__k2_categories WHERE id=".(int)$masterCategoryID;
                    $db->setQuery($query, 0, 1);
                    $masterCategory = $db->loadObject();
                    $cparams = new JParameter($masterCategory->params);
                }

                $params->merge($cparams);

                //Original image
                $savepath = JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'src';
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = 100;
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = md5("Image".$row->id);
                $handle->Process($savepath);

                $filename = $handle->file_dst_name_body;
                $savepath = JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache';

                //XLarge image
                $handle->image_resize = false;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_XL';
                if (JRequest::getInt('itemImageXL')) {
                    $imageWidth = JRequest::getInt('itemImageXL');
                } else {
                    $imageWidth = $params->get('itemImageXL', '800');
                }
                $handle->image_x = $imageWidth;
                $handle->Process($savepath);

                //Large image
                $handle->image_resize = false;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_L';
                if (JRequest::getInt('itemImageL')) {
                    $imageWidth = JRequest::getInt('itemImageL');
                } else {
                    $imageWidth = $params->get('itemImageL', '600');
                }
                $handle->image_x = $imageWidth;
                //$handle->Process($savepath);

                //Medium image
                $handle->image_resize = false;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_M';
                if (JRequest::getInt('itemImageM')) {
                    $imageWidth = JRequest::getInt('itemImageM');
                } else {
                    $imageWidth = $params->get('itemImageM', '400');
                }
                $handle->image_x = $imageWidth;
                //$handle->Process($savepath);

                //Small image
                $handle->image_resize = true;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_S';
                if (JRequest::getInt('itemImageS')) {
                    $imageWidth = JRequest::getInt('itemImageS');
                } else {
                    $imageWidth = $params->get('itemImageS', '200');
                }
                $handle->image_x = $imageWidth;
                $handle->Process($savepath);

                //XSmall image
                $handle->image_resize = true;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_XS';
                if (JRequest::getInt('itemImageXS')) {
                    $imageWidth = JRequest::getInt('itemImageXS');
                } else {
                    $imageWidth = $params->get('itemImageXS', '100');
                }
                $handle->image_x = $imageWidth;
                $handle->Process($savepath);

                //Generic image
                $handle->image_resize = false;
                $handle->image_ratio_y = true;
                $handle->image_convert = 'jpg';
                $handle->jpeg_quality = $params->get('imagesQuality');
                $handle->file_auto_rename = false;
                $handle->file_overwrite = true;
                $handle->file_new_name_body = $filename.'_Generic';
                $imageWidth = $params->get('itemImageGeneric', '300');
                $handle->image_x = $imageWidth;
                //$handle->Process($savepath);

                if($files['image']['error'] === 0)
                $handle->Clean();

            }
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Нашел эту тему, когда искал другую.
От себя добавлю: уважаемый Ghost_FX предоставил часть кода файла /administrator/components/com_k2/models/item.php, где отключил запись для _L, _M и _Generic путем закомментирования строчек
Код
//$handle->Process($savepath);

И отключил ресайз на _XL -
Код
$handle->image_resize = false;

Добавил в FAQ.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

ismeyker

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
извините, что не по теме, но у меня небольшая проблема:
ПОМОГИТЕ вывести изображение материала К2 в самописный модуль
При написании своего модуля отображения материалов К2 - не могу в таблицах сайта MySQL найти данные о картинке данного материала, чтобы ее затем вывести на страницу. Картинки после прикрепления к форме создания материала K2 переименовываются в вид 9f6d22dec5a20bcdd01cd84e98637764.jpg, и нигде данные в таблицах не нашел. К2 эти данные в файл тоже не записывает.

Как понял, в названии файда 9f6d22dec5a20bcdd01cd84e98637764.jpg, скорее всего, закодирован Id материала, но как вставить изображение в свой модуль я не знаю.
*

ismeyker

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
ответ найден - MD5
<?
   echo MD5("160");
?>
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
ответ найден - MD5
<?
   echo MD5("160");
?>



Это где такое?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

ismeyker

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
пример работы MD5 - 128-битный алгоритм хеширования
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
То, что он в MD-5 декодирует - это понятно. Как Вы проблему-то решили?))
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

koda

  • Захожу иногда
  • 57
  • 1 / 0
Ну так что какое всетаки решение правильное, а то как то напрягает это дублирование изобр.

И кстати, как сделать что бы при написании статьи с фронта юзером, при вставке картинки или галереи ему присваивалась его папка с изоб., или вообще при регистрации юзера присваивалась папка, куда он мог бы загружать свои файлы, картинки и т.д. не посредственно работая с К2 с фронат и самое главное, что бы он дальше своей папки не мог лазить - очень надо.
*

ismeyker

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
первое - id материала нам известен (к примеру $id_materiala)
второе - кодирует он по формуле MD5("Image".$id_materiala)

<?   // вывод изображения
         echo "<img src = '/media/k2/items/cache/".MD5("Image".$id_materiala)."_S.jpg' alt=''>";
?>
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
первое - id материала нам известен (к примеру $id_materiala)
второе - кодирует он по формуле MD5("Image".$id_materiala)

<?   // вывод изображения
         echo "<img src = '/media/k2/items/cache/".MD5("Image".$id_materiala)."_S.jpg' alt=''>";
?>

+1
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

arhad

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Небольшое дополнение. Если необходимо, чтобы картинка новости в материале не была ссылкой на большое изображение _XL (тогда его можно отключить и при нажатии на картинку не будет открываться пустое модальное окно), то в файле: components\com_k2\templates\default\item.php
надо закомментировать строчки:
Код
<a class="modal" href="<?php echo $this->item->imageXLarge; ?>" title="<?php echo JText::_('Click to preview image'); ?>">
. У меня на 210 строке.

При этом, если закомментить образование "большого" изображения, как сказано выше , то в админке при загрузке изображения его превью совсем не отображается. Тогда приходится или создавать два изображения ("большое" и другое), или выбрать в категориях показывать везде "большое" изображение). В админке тогда вместо превью будет ссылка на превью (что может даже лучше, так как лишний раз не грузится изображение)
« Последнее редактирование: 02.09.2011, 15:05:40 от arhad »
*

arhad

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Кто-нибудь разобрался, как сделать так, чтобы он не обрабатывал изображения? Уже что только не пробовал закомментить, но после очередной загрузки подготовленного изображения, весом 16 КБ, K2 превращает их в 33 КБ.
*

00dim00

  • Новичок
  • 8
  • 1 / 0
Я разобрался...
все как советовал Ghost_FX, закомментить не нужные форматы, я вообще оставил Large и src на всяки случай, картинки у меня маленькие :-))
Потом прошелся поиском totalcommander по компоненту, поиск текста md5(.*id.*), поставить галочку Рег. выражения.  и заменил там где надо конструкции типа
Код
if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XS.jpg'))
                $item->imageXSmall = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_XS.jpg';

на

Код
  $img12=K2StoreItem::getK2Image($item->id, '_S');
            if(strlen($img12)>5) $item->imageSmall=$img12;

в каждом файле где произвел такую замену, в начало файла вставил
Код
require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2store'.DS.'library'.DS.'k2item.php');
это файл компонента корзины для каталога К2

в нем есть функция getK2Image($id, $size)
переписал ее
Код
function getK2Image($id, $size) {
$app = JFactory::getApplication();
jimport('joomla.filesystem.file');

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).$size.'.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).$size.'.jpg';
} else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_XL.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_XL.jpg';
} else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_L.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_L.jpg';
} else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_M.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_M.jpg';
} else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_S.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_S.jpg';
} else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_XS.jpg'))
         {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_XS.jpg';
} else

        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$id).'_Generic.jpg'))
          {
$image = JURI::root().'media/k2/items/cache/'.md5("Image".$id).'_Generic.jpg';
}
        else
        if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'src'.DS.md5("Image".$id).'.jpg'))
        {
$image = JURI::root().'media/k2/items/src/'.md5("Image".$id).'.jpg';
}
        else
        {
$image = '';
}
return $image;

}
раньше эта функция возвращала ссылку на файл нужного размера, щас происходит тоже самое, но если данного размера нет, она возвращает сначала _XL, если и его нет, то _L и так далее вплоть до изначального фала в папке src

кому надо без компонента корзины, можете вместо
Код
require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2store'.DS.'library'.DS.'k2item.php');
вставлять саму функцию, в принципе должно сработать :-)

ногами не пинать ))) я не программист :-))))

P.s
смотрите только где меняете, особенно в папке /administrator/ там есть функции по удалению картинок, вот там менять не надо, а то не будет работать удаление картинок
и не удаляйте строчки, комментируйте их, а затем вставляйте свои, и делайте резервные копии редактируемых файлов, не ленитесь :-) сэкономите много времени :-)))
« Последнее редактирование: 09.09.2011, 13:32:16 от 00dim00 »
*

Dealer

  • Захожу иногда
  • 66
  • 0 / 0
У меня К2 делает 6 одинаковых изображений с разными названиями. Проблема в том что иконки на главной весят как целые изображения. Где настроить чтобы к2 обрабатывал изображения?
(J!1.7 K2 JCE изображения в отдельной вкладке создания/редактирования материала)
*

00dim00

  • Новичок
  • 8
  • 1 / 0
У меня К2 делает 6 одинаковых изображений с разными названиями. Проблема в том что иконки на главной весят как целые изображения. Где настроить чтобы к2 обрабатывал изображения?
(J!1.7 K2 JCE изображения в отдельной вкладке создания/редактирования материала)
в j 1,5 это делается в настройках компонента задается в пикселах "Ширина очень маленького" , "Ширина среднего изображения " и т.д далее в настройках категории указываете где какие изображения показывать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Обрезание изображений по ширине и высоте в k2

Автор Faina

Ответов: 18
Просмотров: 11471
Последний ответ 24.02.2015, 21:42:16
от nyaforce
Выравнивание изображений в списке категории

Автор adcroco

Ответов: 4
Просмотров: 1592
Последний ответ 27.02.2014, 20:35:50
от adcroco
Количество основных изображений в К2.

Автор kart072

Ответов: 15
Просмотров: 2929
Последний ответ 23.02.2012, 15:20:58
от kart072