Как стать автором
Обновить

Комментарии 27

Спасибо за наводку на хорошую библиотеку для работы с миниатюрами. А то уже забадался велосипеды изобретать.
Спасибо, вовремя.
Что-то не поняла я…
Фильтры вывода??? Т.е. изображение модифицируется не при загрузке, а при отображении? И если у меня в галерее 100 превьюх на одной странице — то при каждом просмотре страницы эти превьюхи генерятся на PHP? Хм…
Может быть он их как то все же кеширует? Не думаю что все настолько плохо, а то 100 превьюх для файлов по 10 метров будет накладненько каждый раз генерировать.
они кешируются
нет создает и сохраняет в папке cache — если следующий раз с такими же параметрами вызывается изображение, то обращается к уже существующему.
А если исходная картинка с этого времени изменилась?
Вообще — перегенерирует, но тут уже броузер свой кэш включает.

Поэтому, я добавляю ?timestampобновления, чтобы броузер выводил новые картинки всегда.
Вообще это не правильно. На сайтам с большим количеством картинок будет лишняя (довольно большая) и совсем не нужная нагрузка + замедление скорости открытия сайта.
Надо чтобы картинки отдавались напрямую nginx-ом, без задействования php. Но тогда они должны приводиться к требуемому виду во время добавления на сайт.
Так они ж и отдаются.

Первый раз php генерирует уменьшенную картинку и кладет ее в папку кэша. Там эта картина и лежит. Лично у меня лежат скриншоты сайтов — они обновляются периодически. Имена картинок и кэшированных копий при этом не меняются.

Nginx отдает картинку. Броузер видит, что адрес картинки прежний — и выводит свою сохраненную копию (старую картинку). Поэтому я добавляю к адресу timestamp последнего обновления ссылки (у меня в БД при обновлении пишется).

Так все и работает, без нареканий.
Вот прямая ссылка на картинку webstartpage.ru/assets/components/phpthumbof/cache/8205d9aae8a4a5bdcfa5a22d6c99b20b.6d51640cbf897f1de7d609fd986018d9.jpg?1319860380
Когда обновляется файл с картинкой, то меняется дата его модификации и nginx на основании этого отдает картинку (а не 304) при запросе от браузера if-modified-since.
Nginx то отдает, а броузер свою копию подсовывает. Причем, если открыть картинку в новом окне, отдельно и нажать f5 — броузер показывает новую версию =)

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

И кстати, последняя версия phpthumbof (1.2.2) Revo как то совсем круто кэширует — откатился на 1.2.0.
Фильтр вывода работает при рендеренге страницы. То есть — при совмещении контента и шаблона.
На экран вы получаете уже готовую страницу с обработанными превьюшками.

Все картинки кэшируются, конечно.
TV параметр не обязателен. Можно работать с изображением просто через input.

Я делаю вот так, с обычными ссылками:

< img src='[[+id:input=`/inc/img/favorites/[[+img]]`:phpthumbof=`w=200&h=112&zc=1`]]?[[+updated:strtotime]]' alt='' title='' width='200' height='112' class='small' / >

id здесь просто для начала работы фильтра, дальше путь к картинке и placeholder. Как видно — они запихиваются через фильтр input, и к нему уже применяется phpthumbof. Также добавлено время обновления картинки, для борьбы с кэшем броузера.

Если интересно, как это все работает — вот, можно потыкать — webstartpage.ru
Подскажите. Делаю фильтрацию фотки по вашему примеру через чанк.


Вот таким образом вызываю [[$img200?&gallery=`469` &img=`002`]]

Но переменные gallery и img не подставляются. Просто пропуск.
Но если я в любом месте чанка добавляю переменные, nо все срабатывает. Добавить можно как угодно
можно как комментарий.
или alt='[[+gallery]] [[+img]]' — или так к тегу img.

Подскажите в чем проблема?
Вижу 2 варианта:
1. Кэширование. Попробуйте [[!$…
2. Порядок обработки переменных. Тут нужно разбираться. У Эво была такая пробема, когда phx при определенных условиях «съедал» плейсхолдеры.
забыл добавить у меня Revo.
1ый вариант сработал. А можно объяснить, почему. Я понял, что восклицательный знак задает моему чанку кешируемость. В последующие вызовах код обрабатываться не будет. Но как это повлияло на вывод переменных? Я не пойму.
Наоборот, чанк с! НЕ кэшируется. И обрабатывает все переданные переменные каждый раз.

Иначе, после первой обработки вывод берется из кэша и на смену переменных ему начхать.
Да, точно я перепутал.
А то что он не будет кешироватся, не повлияет на скорость работы?

А по поводу переменных. Они и не меняются. Их просто нет. Место них пустое место.

Да у меня есть предлоложение что это из-за двойных скобок


конструкция [[++site_url]]assets/gallery/[[+gallery]]/[[+img]].jpg выводиться без проблем.
Вы что-то путаете.

[[$ — это работа с чанком

[[+ — это работа с плейсхолдером. Плейсхолдеры находятся внутри чанков, страниц, шаблонов.

Если вы вызываете чанк с параметрами — то они превращаются в плейсхолдеры внутри него.
Вот здесь пример: rtfm.modx.com/display/revolution20/Chunks

Вот мой вызов: [[+id:input=`/inc/img/favorites/[[+img]]`:phpthumbof=`w=200&h=112&zc=1`]]
Вот ваш: [[$img200?&gallery=`469` &img=`002`]]

Вы видите, что я работаю с плейсхолдером, а вы с чанком? Понимаете ли вы разницу?

Передавать значения для плейсхолдеров при вызове чанка в вашем случае не имеет смысла, так что делайте как работает — [[++site_url]]assets/gallery/[[+gallery]]/[[+img]].jpg
Спасибо. Понял где я не до понимал систему.
У меня получается я плейсходер вызываю через чанк.

Приблизительно понял. Но надеюсь в процессе дальнейшей работы и изучения разберусь более детально.

Спасибо вам за статьи на modx-cms очень полезные.
Как то я пост прослоупочил( Плагин как то попробовал, что то там не заработало, и я про него забыл. Прочитал статью, и понял что 3 месяца я переодически занимался полной ерундой. Автору огромное спасибо. Но вот кое что омрачает мою радость. У меня почему то работает исключительно в виде отдельного вызова,

[[!phpthumbof? &input=`[[+filename]]` &options=`***`]]

и совершенно не хочет работать как фильтр

[[*TvNamephpthumbof=`***`]]

Может быть кто-нибудь подскажет, в чем может быть причина?
разобрался. Невнимательно статью читал. Вывод стоял — Image, а нужно — строка.
автору респект, буду юзать — даже круче чем DirectResize 0.9 (кто помнит)
А куда нужно класть .ttf шрифт? Просто указать путь на сервере до него? А то шрифт по-умолчанию не понимает кириллицу.
А можно ли сделать что бы редактировались изображения только большого размера, а если меньше определенных размеров оставлялись без изменений.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории