Введение
В Drupal существует множество решений работы с изображением, в частности, создание галерей. У каждого есть свои плюсы и минусы. Однако, часто, в их установки нет смысла - если у вас на сайте используются модули CCK и Views, вы сами сможете создать неплохую (а если хорошо знаете друпал, то и отличную) галерею.
В этом маленьком HowTo я расскажу о рецепте галереи от Lullabot. Скринкаст можно посмотреть тут. Некоторые модули придётся пропатчить, почему - поясню позже.
Материал предназначен как для новичков, которые смогут по шагам сделать галерею, не написав ни строчки кода, так и для опытных друпалеров, которые ранее не использовали модули nodereference_url или views_attach. Все настройки будут показаны на английском языке. Это сделано из-за возможных различий в переводах. Если вы работаете в Drupal'е на русском языке и у вас проблемы с пониманием той или иной настройки, просто включите английский интерфейс.
Модули
Что нам понадобиться (в скобках указана версия модуля, которую использовал я):
cck (2.3) Этот модуль предназначен для создания собственных типов материала. Мы создадим два - Галерея и Изображение. nodereference_url (1.2) Очень полезных модуль. Добавляет UI к организации отношения "один ко многим" при использовании модуля node_reference. На это модуль можно наложить патч 477598, это позволит автоматически возвращаться в галерею после добавления в неё нового изображения (другими словами патч добавляет в URL создания ноды destination). Пропатченная версия для ленивых: nodereference_url-6.x-1.2.patched imagefield (3.0) Это подмодуль модуля CCK. Позволяет прикреплять к материалам изображения. Must have :) imageapi (1.6) Требуется для imagefield filefield (3.0) Требуется для imagefield views (2.6) Модуль создаёт списки материалов, которые можно очень гибко настраивать. Один из самых популярных модулей для Drupal. views_attach (2.0) Позволяет внедрять в материлы и/или профили списки, созданные модулем views. По сути выполняет views_embed_view в теле ноды. Если вы создаёте для своего типа материала шаблон, то можно обойтись и без этого модуля, выполнив views_embed_view в препроцессинге. На модуль придётся наложить патч 485832 - он исправляет баг работы с модулем token, без него галерея не заработает. Уже препарированный модуль: views_attach-6.x-2.0-patched token (1.12) (для views_attach) Требуется для views_attach imagecache (2.0-b9) Также необязательный, но очень полезный модуль. Создаёт изображения разного размера от исходного.
Создание типов материалов
Итак, приступим.
Сначала, на странице типов контента (admin/content/types) создадим (admin/content/types/add) два новых типа: Gallery (Галерея) и Image (Изображение).
- Gallery
- Name: Gallery
- Type: gallery
- Submission form settings: исправляем "Body" на "Description" (Описание) (по желанию)
- Workflow settings: убираем галочку с "Promoted to front page" (помещать на главную) (по желанию)
- Comment settings: отключаем (по желанию)
- Image
- Name: Image
- Type: image
- Submission form settings: удаляем "Body" (по желанию) - у изображения будет своё поле для описания. Оно будет однострочным. Если надо многострочное, исправляем "Body" на "Description".
- Workflow settings: убираем галочку с "Promoted to front page" (помещать на главную) (по желанию)
- Comment settings: включаем (по желанию) - можно будет комментировать
Настройка типов материалов
Теперь, созданные типы контента необходимо настроить. В галерее пока особо настраивать нечего, поэтому займёмся изображением. В него нам надо добавить пару полей: ссылку на галерею, к которой принадлежит изображение и собственно само изображение, которое будет загружаться.
Итак, путь - /admin/content/node-type/image/fields, добавляем поля Gallery и Image (дежа вю :)
- Gallery
Добавляем поле. Параметры: - Label: Gallery nid
- Field name: image_gallery
- Type of data to store: Node reference
- Form element to edit the data: Reference from URL
Настраиваем поле:
- Fallback behavior: Display page not found error
- Create a link on referenceable content: For full node view
- Link title: Add photo
- Link hover title: Add photo
- Return path: The page the link was clicked on
- Required: on
- Content types that can be referenced: Gallery
На скриншоте 1 показана страница настроек поля.
- Image
Добавляем поле. Параметры: - Label: Image
- Field name: image_image
- Type of data to store: File
- Form element to edit the data: Image
Настраиваем поле:
- Permitted upload file extensions: jpg jpeg png gif
- Required: on
- Description field: on
На скриншоте 2 показана страница настроек поля.
После этих манипуляций, страница полей для Image должна выглядеть так
Чуть подрихтуем тип Image на странице настройки отображения полей (admin/content/node-type/image/display): "Title" для "Gallery nid" сделаем "inline", А для "Image title" - спрячем ("none"). Должно получиться вот так
Основа готова. Можно создать галерею и добавить в неё фотографии. После каждого добавления - возвращаемся обратно в галерею. Пока изображения в галереи не отображаются. Настроим во второй части.