Вы здесь

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

Интернет и графику в наше время уже не разъединить. Кому интересен голый текст? 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.jpgAdd 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, дает неограниченные возможности при умелом использовании, главное не бойтесь пробовать что то новое -) Спасибо за внимание.

Комментарии

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

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

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

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

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

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

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

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