Вы здесьБлоги / RemaGe's blog / Drupal - Урок двенадцатый - Работа с изображениями. Модуль Image cache.

Drupal - Урок двенадцатый - Работа с изображениями. Модуль Image cache.


By RemaGe - Posted on 20 Октябрь 2009

logo.pngИнтернет и графику в наше время уже не разъединить. Кому интересен голый текст? Drupal, конечно же, обладает средствами для работы с графикой. Давайте обсудим это поподробнее.

Для начала нам понадобится сам Drupal, на сегодняшний день актуальна версия — 6.14, в придачу к нему установим CCK, imagefield и filefield. Нам необходимы входящие в эти пакеты модули: Content, ImageField, FileField, Option Widgets. Устанавливаем все. Теперь мы можем прикреплять к нашим типам содержимого рисунки. Давайте попробуем видоизменить тип содержимого story. Заходим в «Administer › Content management › Content types». Находим Story, и нажимаем «manage fields», напротив него. Добавим поле с рисунком:

Label: image
Field name: image
Type of data to store: file
Form element to edit the data: Image

Drupal-work-with-image-1.jpg

Сохраняем, появляется окно настройки поля, можно оставить все по умолчанию, хотя настройки довольно таки интересны:

Permitted upload file extensions
— разрешенные типы файлов, по умолчанию png gif jpg jpeg.
Maximum/Minimum resolution for Images — максимальное и минимальные разрешенные размеры рисунков (в пикселях), по умолчанию 0, то есть можно загружать рисунки любых размеров, забивается в формате 640x480.
File path — путь, куда будут загружаться рисунки, по умолчанию «files/».
File size restrictions — максимальный размер загружаемых файлов.
Maximum upload size per file — максимальный размер загружаемого файла.
Maximum upload size per node — максимальный размер загружаемых файлов на ноду.
ALT text settings — добавлять ли к рисункам свойство ALT.
Title text settings — добавлять ли к рисункам свойство Title.
Default image — Если не загружено изображение, использовать ли какое либо по умолчанию?
Required — поле обязательно?
Number of values — Сколько изображений можно прикрепить к ноде?

Drupal-work-with-image-2.jpg

Я оставил все по умолчанию. После сохранения, при создании Story, к ним можно будет прикреплять рисунки.

Drupal-work-with-image-3.jpg

При помощи темизации, вы легко сможете разместить картинку так, как вам нужно, но если вы хотите подогнать картинку под какие то только вам ведомые стандарты? Обрезать и скалировать каждое изображение фотошопом, жуть как неудобно... И тут на помощь приходит модуль Image cache, как и большинство полезных модулей Drupal, сам он работать отказывается, и требует imageapi. Устанавливаем ImageAPI, ImageCache, ImageCache UI, и поддержку одной из библиотек, в зависимости от того, какая установлена у вас на сервере, в моем случае это ImageAPI GD2. Сохраняем.
Кстати, для работы Image cache требуется включить Clean URL.
Теперь мы можем создавать пресеты (preset), или если вам будет проще, я бы назвал их «фильтрами». Заходим на страницу «Administer › Site building › ImageCache». И нажимаем «Add new preset».

Drupal-work-with-image-4.jpg

Вводим имя фильтра

Drupal-work-with-image-5.jpg

Сохраняем и попадаем на страницу выбора действий (Action) с изображением. К каждой картинке можно применить сразу несколько действий.

Drupal-work-with-image-6.jpg

Add Crop — обрезать картинку.
Add Deprecated Scale — Предшественник «Add Scale And Crop», исчезнет в версии ImageCache 2.1.
Add Desaturate — Сделать изображение черно-белым.
Add Resize — изменить размер изображения.
Add Rotate — повернуть изображение.
Add Scale — изменить размер изображения, с сохранением пропорций.
Add Scale And Crop — Изменить размер изображения до нужного, с сохранением пропорций, а потом обрезать.
Add Sharpen — изменить четкость изображения.

Я задал скалирование (Scale) до 200 пикселей по ширине, и сделал изображение черно-белым. Давайте добавим еще один фильтр, например, со скалированием до 400 пикселей по ширине, и поворотом (Add Rotate) изображения на 90 градусов.
Вот что у меня получилось.
Первый фильтр, я назвал его First

Drupal-work-with-image-7.jpg

второй фильтр, назвал Sec

Drupal-work-with-image-8.jpg

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

Зайдем в «Administer › Content management › Content types», нажмем «manage fields», напротив типа Story, и там «Display fields».

Drupal-work-with-image-9.jpg

Здесь можно задать как будет отображаться наше изображение.
Выберем Label — Hidden, что бы убрать противную надпись «image», у нод, Teaser — First image, то есть, на изображение в тизере будет накладываться первый фильтр, и Full node — Sec image, на изображение в полной ноде будет накладываться второй фильтр.

Проверяем работу... В тизере исходное изображение уменьшено, и в черно-белых тонах.

Drupal-work-with-image-10.jpg

А в полной ноде, перевернуто и уменьшено.

Drupal-work-with-image-11.jpg

Как вы уже наверно поняли, Image cache в связке с CCK, и Views, дает неограниченные возможности при умелом использовании, главное не бойтесь пробовать что то новое -)

Спасибо за внимание.





Если вам понравилась эта статья, можете сделать мне приятно, подписавшись на RSS, FriendFeed или Twitter.


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Неизвестный аватар

Действительно замечательная связка! До ее использовал для вставки изображений модуль Image, но это совсем не то.
Правда так и не добился того, чтобы дать пользователям возможность вставлять несколько изображений в произвольных местах текста с произвольным выравниванием. :(

спасибо за ваши уроки... хотел бы предложить рассмотреть поподробнее связку cck+taxonomy, как работает автодополнение, как связывается cck с views.. спасибо :)

RemaGe аватар

Незачто, в одном из будущих уроков обязательно вернусь к Views, возможно затрону и taxonomy -)

Неизвестный аватар

Здравствуйте, Евгений!!
Во-первых: ОЧЕНЬ БОЛЬШОЕ СПАСИБО ЗА УРОКИ!
Во-вторых: мне надо сделать две вещи на друпал, и возможно, их можно выполнить на основе предыдущих уроков, и если это так, то скажите в каком направлении мне точно надо двигаться(какие еще модули нужны).
Проблема 1: необходимо сделать что-то вроде справочника сотрудников, которые размещены в таблице базы данных. Т.е. при переходе на страницу выводится таблица сотрудников сгруппированных по отделам, при нажатии на конкретного сотрудника открывается новое окно с полной информацией на него.
Проблема 2: есть директория на сервере, например – filesdoc, в ней находятся папки и в папках файлы с инфой в форматах doc или pdf. При переходе на страницу например – документы нужно чтобы выводилась таблица с названиями папок в одной колонке и файлами хранящимися в этих папках в другой колонке (а лучше что-то вроде меню, папки – меню, файлы - подменю).
Буду очень БЛАГОДАРЕН за помощь.

PS Те кто пишет, что “где вы были год назад?” тоже могли делиться своим опытом общения с друпал на этом сайте, т.к. возможно Вы уже делали что-то очень специфическое и интересное, что могло бы помочь остальным в будущем.

RemaGe аватар

Здравствуйте, спасибо за оценку)
Проблема 1
Отделы создаете с помощью таксономии, тип материала "сотрудники", с помощью CCK, если нужна фотография, читаете этот урок.
Проблема 2
Не видел ничего подобного на друпал, либо придется вручную создавать ноды, и прицеплять к ним файлы. Либо писать свой модуль. Можно конечно полазить посмотреть на drupal ru, и drupal org, но не уверен что найдете.

Неизвестный аватар

Евгений, а будет урок как видео на сайт залить?

RemaGe аватар

Посмотрите урок про CCK, это то что нужно. Только нужно выбрать подходящий модуль- поле для CCK.

Неизвестный аватар

Интересно написано, я пробовал подобное делать ничего не вышло

Неизвестный аватар

Отличный сайт и материалы очень познавательные