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

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

[Решено] Оптимизация загрузки изображения в статью k2

 (Прочитано 3322 раз)
0 Пользователей и 1 Гость смотрят эту тему.
cmotp10
Осваиваюсь на форуме
***

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

Сообщений: 30


« : 27.01.2013, 20:58:29 »

Уважаемое сообщество, очень благодарен отзывчивости участникам форума, которые способствовали решению задачи вывода индивидуального тега title в статье. Воспользовавшись поиском - я к сожалению не нашел ответа на свою новую задачу.

Заключается она в следующем. Компонент k2, при создании статьи, дает возможность загрузить изображение в статью (вкладка "изображение"). Все происходит очень просто, и результатом доволен.

Есть очень существенный недостаток в этой процедуре.

При загрузке изображения он создает дубликаты разных размеров, часть которых вообще не используется. Т.е. загружаемую картинку он дублирует по числу настраиваемых "Параметры изображения материала". Итого получается 6 копий одной и той же картинки, и как результат, вместо запланированных 30-100кб одной картинки - мы получаем 700-800кб.
Это было бы терпимо, если использовать на маленьком сайте визитке, но когда сайтом является новостник, то нешуточный вес получается. Так на оном из своих новостников я решил зачистить папку с картинками, и в результате получился ошеломительный результат. Сайт весил 1,5 гига, а стал весит 30мб.

Прошу помочь с решением задачи. Можно ли найти решение, как запретить k2 дублировать картинки и дать возможность просто делать ресайз одной картинки при выводе в разных вариантах?
« Последнее редактирование: 14.02.2013, 19:17:04 от cmotp10 » Записан
cmotp10
Осваиваюсь на форуме
***

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

Сообщений: 30


« Ответ #1 : 14.02.2013, 17:45:22 »

Буду записывать версии того, что смог нащупать в коде. Решения пока нет, но может быть эти действия натолкнут меня, либо кого еще на правильный путь.

Итак. Запретить записывать дубликаты изображение на сервер в Joomla k2 можно следующим образом:

1. Открываем файл по адресу: /administrator/components/com_k2/models/item.php
В нем нужно найти код, начинающийся с
Код:
//Original image
$savepath = JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'src';

Этот корд у нас отвечает за настройки картинок. В нем мы можем в конце каждого размера увидеть строку
Код:
$handle->Process($savepath);
Она то и сохраняет наши лишние дубликаты на сервере.

Что бы запретить сохранения - нужно эту строку закомментировать.
Код:
//$handle->Process($savepath);

Проведя эксперименты методом научного тыка я понял, что в заглавии статьи выводятся файлы размера '_L' они же Large image
Т.е. если закомментить все, кроме Large image (т.е. оставить в разделе строчку $handle->Process($savepath); незакомментированной), то в блоге отображается картинка и в статье тоже. На сервере естественно находится только 1 копия этой самой картинки. Как ее потом оформить в статье (т.е. расположение и прочее) - это уже руками допиливает стили.

Теперь задача. Файл, который сохраняется в '_L' - из 100кб оригинального размера почему то весит после загрузки на сервер 440кб. С этим пока я не разобрался, однако заметил, что вес файла '_S' - это маленький который - весит всего 40кб. Это меня прям устраивает, но я не пойму где прописать, что бы он отображался на том месте, где показывает '_L'.

В Google вычитал, как можно избавиться от мусора (т.е. сохраненная бесполезная версия оригинального файла) на сервере.
вот ссылка автора этой статьи:
Показать текстовый блок

После манипуляций в этом же файле /administrator/components/com_k2/models/item.php согласно описаниям в статье - мы получаем в результате пустую папку src, куда заливается оригинальный файл.

В общем то задача моя частично решена. Я понял как запрещать делать копии файлов, это хорошо. Но я не понял где регламентируются размеры этих файлов, что бы с оптимальным для себя размером их можно было бы заливать на сервер и мой сайт при этом мало весил. Успех выполнения оценю пока на 20% из 100.

очень надеюсь на помощь сообщества.
Записан
cmotp10
Осваиваюсь на форуме
***

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

Сообщений: 30


« Ответ #2 : 14.02.2013, 18:36:01 »

Дополнение 2.

Получилось создать запись, в которой отображается только одна картинка. На сервер не записываются дубликаты и выводится как в блоке категорий, так и в самой статье только эта самая картинка.

Расскажу что сделал:
1. Как уже и описал выше - вся процедура с комментированием строки $handle->Process($savepath); в ненужных мне форматах в файле, который находится по адресу: /administrator/components/com_k2/models/item.php. За это спасибо парням из ветки http://joomlaforum.ru/index.php/topic,104299.new.html Печально, что это я нашел только сейчас...

2. После исправлений в файле /administrator/components/com_k2/models/item.php с учетом рекомендаций по запрету сохранения оригинального файла я перешел в редактирование других файлов.

А именно: /components/com_k2/models/item.php (Заметьте без administrator, а именно в components).
В ней меня заинтересовало оба файла:
item.php
itemlist.php

В нижестоящих строках типа
Код:
if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg'))
{
$item->imageXSmall = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg';
if ($params->get('imageTimestamp'))
{
$item->imageXSmall .= $timestamp;
}
}
я вставил '_S.jpg' в конце после id (в них по умолчанию были записаны все форматы)
Обе манипуляции я провел в двух этих файлах, и как результат - все встало как надо.

ОСТАВИЛ ПУСТОЙ ТОЛЬКО САМЫЙ ПЕРВЫЙ (Я так понимаю он отвечает за вывод картинки заглушки, и если в него вставить атрибут, а заглушки нет - то появится у вас во фронтэнде тег alt.)

Процент своего успеха оценю как 60%.

Что теперь. Теперь, если этой темой все же кто-то заинтересуется - я хотел бы услышать от специалистов по PHP и просто знающих людей- что я сделал лишнее, или что я сделал Неправильно. Сразу скажу, что я не программист, но умею верстать, поэтому подсказки на сугубо техническом языке мне будут не понятны.

Теперь, что мне предстоит сделать - поскольку победа для меня большая. Я получаю сжатый для себя файл, который при старте весит 100кб на сервер сохраняется лишь 25кб. - мне нужно переверстать теперь свои странички, что бы все красиво выводилось) и после этого думаю будет большая победа.

Ах да, еще мне необходимо прооптимизировать код, для поисковой оптимизации для моих картинок. Думаю это не сложно, главное понять что куда засунуть.

И не решенной задачей осталось то, что в админке пока не видно - какая картинка прикреплена. По сути мне она и не нужна, но если с точки зрения программистов окажется, что мои действия были правильны - нужно будет этот момент довести до ума.
« Последнее редактирование: 14.02.2013, 20:05:47 от cmotp10 » Записан
maestra
Осваиваюсь на форуме
***

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

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



« Ответ #3 : 09.04.2014, 20:15:08 »

В Google вычитал, как можно избавиться от мусора (т.е. сохраненная бесполезная версия оригинального файла) на сервере.
вот ссылка автора этой статьи:
http://argon06.blogspot.ru/2011/12/k2.html

Решение по указанной автором ссылке оказалось самое действенное Azn Но хотел бы добавить, что при редактировании материала в админке вместо картинке отображается ее alt, что не есть хорошо. Лечится это следующим образом:
Открываем файл: /administrator/components/com_k2/views/item/tmpl/default.php
Здесь надо найти строку (у меня это 277 строка)
Код:
<img alt="<?php echo $this->row->title; ?>" src="<?php echo $this->row->thumb; ?>" class="k2AdminImage" />
и изменить "thumb" на "image".
Записан
DmWagner
Осваиваюсь на форуме
***

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

Сообщений: 54


« Ответ #4 : 05.05.2015, 02:10:09 »

Классный урок, все работает хорошо, кроме одного, а именно, не отображается предпросмотр изображения в форме добавления материала на фронте, отображается только alt попытка изменить thumb на image в шаблонах формы, результата не дала, менял во всех шаблонах, в том числе и в default тот что в компонентах... Если не обращать на это внимания, то все работает.
Может кто подскажет как решить проблему с этим предпросмотром?
Записан
muratb
Осваиваюсь на форуме
***

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

Сообщений: 56



« Ответ #5 : 29.06.2016, 13:50:23 »

К сожалению, этот "номер" не проходит на К2+Joomla! 3.5.1 (сервер Апач 2.2 РНР 5.3).
Прописываешь в /administrator/components/com_k2/models/item.php
Код:
//$handle->Process($savepath);
и перестают загружаться изображения вообще.
Кто нибудь имеет решение?
Записан
muratb
Осваиваюсь на форуме
***

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

Сообщений: 56



« Ответ #6 : 29.06.2016, 18:44:13 »

На оф. форуме пока молчат  laugh
Записан
muratb
Осваиваюсь на форуме
***

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

Сообщений: 56



« Ответ #7 : 29.06.2016, 18:49:10 »

 drink Ждемс
Записан
printed2010
Новичок
*

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

Сообщений: 4


« Ответ #8 : 31.07.2016, 20:16:27 »

Зачем трогать код? В настройках К2 поставить качество сжатия Jpeg - 51% (всё равно все картинки из Интернета и уже ужаты по максимуму), на нужные размеры поставить нужную ширину в пикселях, а на ненужные указать 100 пикселей. А можно и 1 пиксель. 100 000 картинок самого маленького размера будут весить около 300 Мб. Столько материалов за всю жизнь не вставить.
Записан
muratb
Осваиваюсь на форуме
***

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

Сообщений: 56



« Ответ #9 : 31.07.2016, 20:46:38 »

Зачем трогать код? В настройках К2 поставить качество сжатия Jpeg - 51% (всё равно все картинки из Интернета и уже ужаты по максимуму), на нужные размеры поставить нужную ширину в пикселях, а на ненужные указать 100 пикселей. А можно и 1 пиксель. 100 000 картинок самого маленького размера будут весить около 300 Мб. Столько материалов за всю жизнь не вставить.
В том то и дело, там не 100 000 картинок а намного больше ))) и каждый день пополняются )))
Записан
Septdir
Живу я здесь
******

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

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


Skype: septdir


« Ответ #10 : 31.07.2016, 21:10:16 »

В том то и дело, там не 100 000 картинок а намного больше ))) и каждый день пополняются )))
Ну в 3 версии k2 уже настраиваемые. Но по факту же 3 версию фиг дождешься так что есть 4 подхода.
1. Написать свой плагин (я может займусь, но пока мне не до этого).
2. Есть такой плагин k2 png image можно там код исправить, просто и сердито.
3. Поправить код в самих файлах, ну тут можно закоментить лишнее, либо удалить, но k2 юзает почти все изображения. small есть в админе l тоже.
4. Как верно было описано выше снизить качество. И поставить лишние изображения размеров 1px. Можно конечно все поставить 1px а в материалы дергать изображения из папки srс, но тогда оптимизация изображений будет хромать. Я лично ставлю по 1px все кроме small medium и large. Даже без уменьшения качества при 30к - 40к материалов места хватает.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | 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