Новое в версии 1.0. Работа с изображениями (Часть 2)

Я уже писал о том, что нового вас ждет в версии 1.0 в области работы с изображениями. Но это еще не все! Мы постарались в новой версии решить еще ряд наболевших проблем, связанных с загрузкой изображений.

Известно, что на сайтах, где пользователи активно создают, редактируют, удаляют топики, нередко очень быстро «испаряется» дисковое пространство. Причина – масса загруженных и неиспользуемых изображений. Сам наблюдал, как пользователь на одном сайте при создании топика раз десять заливал разные картинки, а в итоге оставил только одну. Но ведь девять неиспользуемых картинок так и остались на диске, где хостится сайт. И если удалить топик с картинкой, то топик-то удалится, а картинка останется.

Работая над новой версией Альто, мы подумали и об этих проблемах. Информация обо всех загружаемых изображениях – в самом ли топике, в фотосете ли – теперь заносится базу. Мы теперь знаем, какая картинка кем и в какой топик загружена. Более того, если пользователь решит загрузить одну и ту же картинку в несколько топиков, то она будет загружена только один раз. А если пользователь удалит топик, то будут удалены с диска и все картинки этого топика (разумеется, если они больше нигде не используются).

Еще одна задача, которая решается при таком подходе – администратор сайта может контролировать загружаемые изображения. Он может в админке просмотреть список загруженных изображений, чтобы убедиться, нет ли среди них нарушающих установленных правил.

Это нововведение также открывает большие возможности для разработчиков плагинов – теперь не составит особого труда получить список всех изображений, загруженных пользователем, или всех фотографий топика. Точно так же можем теперь получить список изображений, которые вообще нигде не используются, и удалить их для экономии места на диске.

Похожие статьи

  • Новое в версии 1.0. Собственные типы блогов без программирования
    Одним из ключевых изменений в новой версии движка я считаю возможность создавать и всячески жонглировать типами блогов. Те, кто знаком с ЛС знают, что там были блоги персональные, коллективные и закрытые. И все. И...
  • Новое в версии 1.0. Работа с изображениями
    Прежние механизмы работы с изображениями движка вызывали много нареканий, и от разработчиков, и от сайтостроителей. Поэтому данный функционал был переписан более, чем полностью. Во-первых, обеспечена поддержка всех...
  • Новое в версии 1.0. Структура папок и статические файлы
    Этой статьей я хотел бы начать серию публикаций о том, что нового вас ожидает в версии 1.0 Alto CMS. Долго думал, как бы выстроить изложение так, чтоб эти статьи были полезны разработчикам и понятны всем прочим. Но...
  • Alto CMS — финальный релиз версии 1.1
    Вот и дождались — версия 1.1.0 вышла в релиз. Кратенько о нововведениях в этой версии: Меню сайта вынесены в отдельные сущности и теперь вы можете настраивать их из админкиЕще нововведение: сниппеты (в некоторых...

43 комментария

+2
Ну просто супер!!! Без данной функции мой хостинг просто разрывается. Отличная новость.
0
До перехода на Livestreet у меня стоял Wordpress, а там загруженные изображения загружались в wp-content/images/ (точно не помню). Изображения из этой категории используются до сих пор. Но я знаю что там очень много мусора и место поджимает. Нововведения смогут проконтролировать эту ситуацию?
+1
Контроль, описанный выше, работает при добавлении и обновлении топика. Поэтому старый мусор автоматически не будет собираться. Да и не должно этого быть в «коробке», ИМХО.

Для подобных случаев нужен плагин, который, используя «коробочный» функционал, отфильтрует зерна от плевел.
0
Спасибо!
0
Это просто замечательно! Осталось лишь узнать, когда мы получим доступ к этой версии;)
+1
Что мешает скачать последнюю версию мастер ветки с гитхаба?
0
К сожалению, версия master с GitHub почему-то не хочет устанавливаться на базу данных от 0.9.7. Не даёт продолжить установку.
0
Добрый вечер!
Скажите, а сколько у вас по времени отвечает техподдержка?
+1
Извините, но тут нет такого понятия, как техподдержка. Тут вам могут оказать ту или иную помощь в техническом вопросе (если зададите вопрос правильно). AltoCMS — бесплатный продукт, соответственно, на сколько мне известно, никто пока не брал на себя обязанность по созданию центра техподдержки.
0
Извините, но платные продукты тут тоже есть. И есть запись что поддержка отвечает по такому то адресу. Да и вообще, можно хотя бы что то ответить, не обязательно оказывая помощь.
0
Обращайтесь к разработчикам этих платных продуктов. Предварительно можете поинтересоваться перед покупкой в течении какого времени стоит ждать ответа от поддержки.
0
Здравствуйте, уточните о чем конкретно речь.
0
Продублировал на почту техподдержки.
+1
если пользователь решит загрузить одну и ту же картинку в несколько топиков, то она будет загружена только один раз.

А как это определяется — по имени, размеру, др.?
+1
По вычисляемому хешкоду md5 файла. Возможно, в перспективе появятся другие методики, но сейчас так
+2
Вот бы прикрутить к форме добавления изображения вкладочку «Ранее загруженные», а в ней каким-нибудь elFinder-ом (вроде бесплатный) показать папку юзера в uploads-е. Как думаете?
0
Думаю, что это было б клево :)
0
… типа «мечтать не вредно»? насколько это реально?
Отредактирован:
+2
При написании плагина конкурсов так и делал. Опередил разработчиков Alto:-) Только не ограничивайте работой с топиками! Нужна контролируемая работа с изображениями и в других разделах.
+4
Информация об изображениях хранится отдельно, о месте их размещения — отдельно. База спроектирована так, что можно хранить какие угодно изображения (и не только изображения — любые файлы и ресурсы, включая внешние ссылки), которые цепляются к любой сущности (либо вообще никуда не цепляются, а просто загружаются для будущего использования). Вообще для разработчиков, конечно, отдельная статья нужна, как это все устроено, и как это можно заюзать для своих задач
0
Допиливайте движок — и тогда ждем статьи.
+1
Достаточно будет пример применения кода. Статьи долго писать.
0
Ходят слухи что анимация «Зло», в него можно встhаивать php код и т.п.
Подскажите, как безопасно загружать анимацию на сайт?
Если можно — то код функции, если нет. то порядок действий чот делать с файлом, пересобрать его и…?
0
Возможно, я что-то не так помню, но как-то отложилось в памяти, что в GIF можно впихнуть какие-то левые данные. Если это так, то этими данными может быть и php-код. Только вот сам по себе он в этом случае исполняться не будет, его нужно как-то извлечь и запустить на исполнение. Т.е. нужны специальные средства для этого, некий специальный загрузчик, который этим будет заниматься. А загрузка такой картинки и ее отображение средствами HTML никакого побочного действия не окажет (кроме лишнего трафика).
0
Подскажите, на что заменить это (ссылка на главное фото профиля):
<img src="{$oUserProfile->getPhotoUrl()}" alt="photo" class="profile-photo" id="foto-img" />

— чтобы вывести оригинальное фото?

По умолчанию у нас выводится это:
/uploads/images/00/00/01/2014/03/04/a6b74989.jpg-250x250.jpg

— разумеется, цифрами (.jpg-250x250.jpg) можно манипулировать. Но как вывести вот это изображение:
/uploads/images/00/00/01/2014/03/04/a6b74989.jpg

— без всяких ограничений размера, т.е. — залитый оригинал?
0
Так можно?
$config['module']['user']['profile_photo_width'] = array(500,250,0);

(где «0» это оригинальное изображение)
+1
{if $oUserProfile->getProfilePhoto()}
    <img src="{$oUserProfile->getProfilePhoto()}" alt="photo" class="profile-photo" id="foto-img" />
{else}
    что-то выводим, если фото нет (иди ничего не выводим)
{/if}
Я обернул все это в конструкцию {if}{/if}, т.к. оригинального фото мажет не быть
0
Всё понял! Спасиб)
0
Вадим, подскажите, пожалуйста, как вывести в нужном месте картинку, установленную на превью топика? Спасибо!
0
Еще вопрос: где найти в коде момент, когда картинка оборачивается в тег a. Хочу убрать ссылку, чтобы просто картинка была.
+1
Картинки топика принудительно оборачиваются ссылкой для вывода их в галерею плагина prettyPhoto. Делается это скриптом common/templates/skin/experience/themes/default/js/theme.js в строках 454-463. Просто удалите или закомментируйте их.
0
Спасибо!
0
Не сработало.
// $('.topic-text img, .comment-text img').each(function(){
    //     var a = $('<a href="'+$(this).attr('src')+'" rel="prettyPhoto[pp]" ></a>');
    //     a.insertAfter($(this));
    //     $(this).appendTo(a);
    //     a.attr('rel', "prettyPhoto[topic]").prettyPhoto({
    //         social_tools: '',
    //         show_title: true,
    //         deeplinking: false
    //     })
    // });
0
Я не уверен, что должно было сработать, но уточню: после внесения правок кэш почистили (временные файлы, которые движок генерирует)? Кэш браузера скинули?
0
Включил принудительную обработку js, да. Вы это имеете в виду?
0
Может мы о разном? Этот кусок кода оборачивает картинки топика и комментариев гиперссылкой и формирует из них галлерею. Если кусок удалить, как сделали вы, то в топике выводится буду картинки без ссылок.
Сейчас повторил операцию у себя: удалил кусок кода, удалил кэш и все заработало.

Галочка в админке на принудительную обработку скриптов из папки common/templates/skin/experience/themes/default/js не работает (. Удалите папку _run\assets сами и все получится.
0
Да, получилось, удалил одновременно папки cache и assets. Просто я не программист, мне надо точно говорить что делать)) Для меня не очевидно было) Спасибо за помощь!
Отредактирован:
0
А может подскажешь еще, как как вывести в нужном месте картинку, установленную на превью топика?
+1
С помощью плагина https://github.com/altocms/alto-plugin-topicintro/ в любом месте, где доступен топик нужно указать
<img src="{$oTopic->getPreviewImageWebPath('400crop')}" alt="image" />
0
Видимо эта функция таки не была реализована? При удалении топика картинки из него остаются на сервере, а также продолжают учитываться в счетчике публикаций пользователя.



Картинки нигде больше не используются.
0
На сервере в папке загрузок, а также в медиафайлах в админке они остались.
0
Такая же проблема и с Livestreet 1.03. При удалении топиков или блогов, используемые в них картинки остаются на сервере. Тихий ужас, учитывая, что на сайте постоянно используется огромное количество изображений (в основном скриншоты к играм)
0
Так. Понятно. Этот баг (недоработка, фича) имеет место быть только для фотосетов. Если картинка находится в теле статьи, то она при удалении статьи с сервера сразу же удаляется. Ну, невелика проблема, надо всего лишь запретить юзерам использование фотосетов. Как тогда быть, если в пост требуется вставить большое количество картинок, н-р, скриншотов? Ответ очевиден — прятать их под спойлер. Правда при этом придется городить lazyload.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.