Вторая часть руководства по созданию собственной галереи на Drupal с помощью CCK и Views.
Первую часть можно найти здесь.
Продолжаем...
Типы данных созданы, теперь необходимо их правильно отобразить. В это нам поможет модуль Views, с его помощью мы сделаем два списка - для показа всех галерей и отображение всех изображений в галерее.
Список галерей
Views у нас находиться здесь - /admin/build/views, а новый список добавляется по пути /admin/build/views/add.
Создаём со следующими параметрами:
- View name: gallery_list
- View description: Gallery list
- View type: node
Отлично, список создан! Теперь его надо настроить. Задача звучит так: показать список анонсов всех галерей сайта отсортированных по дате создания в порядке убывания.
Настраиваем:
- Basic settings (основные настройки)
- Row style: Node - по умолчанию, в списке отображаются поля материалов, в нашем же случае нужны только анонсы (teaser) материалов; поэтому выбираем Node и далее: Build mode: Teaser, Display links: да (это включит отображение ссылок Read More)
- Use pager: Yes (Full pager или Mini pager)
- Filters (Фильтры)
- Node: Type: Is one of: Gallery (тип должен быть - Gallery)
- Node: Published: Yes (нам нужны только опубликованные материалы)
- Sort criteria (сортировка)
- Node: Post date desc (дата создания, убывание)
Настройки вашего списка будут выглядеть примерно так (скрин 5).
Осталось создать отдельную страницу для нашего списка. Это делается добавлением дисплея типа страница: Выберите Page и нажмите кнопку "Add display". Теперь в настройках страницы (Page settings) надо добавить путь (gallerys) и (по желанию) пункт меню: Normal menu entry, Title: Gallerys, Menu: Navigation.
Теперь можно сохранять!
После сохранения в меню навигации должен был появиться пункт Gallerys и, если вы уже добавляли галереи, при переходе на него вы увидите список галерей.
Вот мой скриншот этого списка.
Настройка отображения изображений
Почти всё готово для создания списка фотографий в галерее. Осталось перед этим сделать самую малость: настроить уменьшенные копии картинок (иконки, thumnails).
Этим благим делом занимается модуль imagecache. Путь - /admin/build/imagecache, создать новую настройку - /admin/build/imagecache/add. Cоздадим настройки (preset): image_gallery_node_thumbnail (изображения в галереи) и image_gallery_teaser_thumbnail (обложка галереи). Будем использовать операцию "Scale And Crop" (пропорциональное изменение масштаба и обрезка) для обеих настроек, отличия будут только в цифрах: для первой настройки 200х200, для второй - 150х150. Впрочем, Вы можете не придерживаться моих цифр, а поэкспериментировать со своими, - их можно поменять в любой момент. Только не забудьте сбросить старые картинки (ссылка Flush у настройки).
Ну что же, остался последний шаг.
Список изображений в галерее
Теперь необходимо настроить отображение всех изображений, прикреплённых к галереи и создать обложку галереи.
Создаём новый список. Параметры:
- View name: gallery
- View description: Image gallery
- View type: node
Настройки:
- Basic settings (основные настройки)
- Style: Grid (стиль отображения - сетка). Number of column - 3 (в три столбца), Aligment - Horizontal (расположение - горизонтально)
- Use pager: Yes (использовать пейджер [листалку])
- Filters (фильтры)
- Node: Type: Is one of: Image (тип матерала - image)
- Node: Published: Yes (материал должен быть опубликован)
- Fields (поля для отображения)
- Content: Image (field_image_image): Label - none, Link this field to its node - on (поле, добавленное с помощью модуля CCK (content), название поля (Label) мы уберём и сделаем это поле ссылкой на материал, которому оно принадлежит)
- Node: Title: Label - empty (заголовок материала, для этого поля можно тоже включить "Link this field to its node")
- Arguments (аргументы)
Аргументы у списков это посчти тоже что аргументы у функций. В данном случае у нас аргументом является номер материала (node nid) типа Gallery. То есть мы отфильтровываем все изображения которые указывают на галерею номер .- Content: Gallery (field_image_gallery): Action to take if argument is not present (что делать если аргумент отсутствует): Provide default argument (подставить значение по умолчанию...), Default argument type: Node ID from URL (... а взять это значение из URL)
- Sort (сортировка)
- Node: Title: Ascending (сортировка по заголовкам материалов в алфавитном порядке, возможно лучше сделать сортировку по дате создания изображения, оставляю решение этого вопроса на откуп Вам
Теперь основное на данном этапе - добавляем два дисплея (два вида отображения списка): один для показа изображений в галерее, другой - для показа обложки галереи.
Выбираем тип дисплея - "Node content" и добавляем два раза. Чтобы их различать, сразу зададим им имена (Basic settings, Name): Gallery images и Gallery cover.
Настройки у дисплеев такие:
Gallery images
- Node content settings
- Node types: gallery (прикрепить к типу материала gallery)
- Build modes: Full node (режим отображения - полная нода)
- Default argument: [nid] (аргумент по умолчанию. Непропатченная версия не работает здесь, то есть игнорирует указание токена)
- Show title: No (показывать заголовки)
Gallery cover
- Node content settings
- Node types: gallery (прикрепить к типу материала gallery)
- Build modes: Teaser (режим отображения - анонс)
- Default argument: [nid] (аргумент по умолчанию)
- Show title: No (показывать заголовки)
- Basic settings - базовые настройки для этого дисплея необходимо изменить. Чтобы изменения не затронули дисплей по умолчанию, надо эти настройки "перекрыть", делается это просто - открываем любую настройку в Basic settings и нажимаем кнопку Override (справа вверху). Далее выставляем следущее:
- Style: Unformatted (стиль отображения: без форматирования)
- Items to display: 1 (количество материалов для отображения)
На всякий случай привожу скриншоты всех трёх дисплеев:
Default
Gallery images
Gallery cover
После всего вышеописанного у меня получилось примерно так
Также прикрепляю экпорт типов материалов и списков для этого руководства:
- CCK
- Views
Если у вас есть идеи и желание в продолжении руководства, например интеграция с lightbox, голосованием и т.д. и т.п., озвучивайте! Будет время - обязательно напишу.
Комментарии
спасибо!
спасибо!!!!
только в настройках Gallery cover маленькая описка:
Build modes: Full node (режим отображения - анонс)
как понятно из комментария и скриншота Build modes не "Full node", а "Teaser".
2gerboss: спасибо, поправил )
Подскажите, плиз, что нужно сделать для того чтобы в списке фильтров при настройке списков галерей выпадала надпись Node:Type: is one of: Gallery. Спасибо.
Не все ясно. Вы создали тип Gallery cover, для показа обложки галереи. Он где используется? Как я понял, у меня на странице списка галерей стоит gallery_list.
И как в этом gallery_list показывать не аннотацию галерей, а только одну фотку из галереи?
И про аргументы не ясно. Все конечно получилось, но как... Где можно про аргументы почитать подробнее? Или напримере [nid] объясните, пожалуйста, что где откуда берет и как работает.
pmserg2000, выбираете в списке фильтров Node:Type (Материал: Заголовок). Жмете "Добавить". А потом Ставите переключатель "is one of:" и галку "Gallery"
Спасибо!
Подскажите, плиз, какие действия нужно предпринять, чтобы в настройках view появился блок Node content settings?
Спасибо, вроде бы получилось. Непонятно, как для обложки галереи добавить картинку. А то список галерей отображается текстовыми ссылками.
Нашел!
2digital_sword: про аргументы можно написать отдельное руководство Здесь просто совмещено несколько подходов, поэтому кажется всё сложным.
Попробую вкратце объяснить:
1. Аргументы. Это фильтры, параметры которых мы может задавать вне views. Например создать список материалов с аргументом User ID, который будет браться из адресной строки. Тогда обращаясь к нашему списку с разными uid, мы получим списки материалов конкретных пользователей.
2. Node reference. Это CCK поле которое позволяет организовать связь один к одному, оди ко многим, многие к одному между материалами.
3. Views attach. Это "вживление" списков в материалы и профили пользователей.
Сочетание этих техник и модулей позволило создать эту галерею.
Обложка добавляется дисплеем "Gallery cover".
Модераторы! Добавьте пож-ста, и первое, и второе руководство в Книгу! А второе можно на главную
Дан, спасибо за статейку. Обожаю изящные решения без php-хардкора. От себя могу только добавить следующее.
Факт: при сильном уменьшении картинки теряют чёткость и «замыливаются». Очень полезно при таких обстоятельствах к мелким картинкам, которые уменьшаются в 3-5 и более раз, применять стандартный Sharpen, настройки по-умолчанию — radius: 0.5, sigma: 0.5, amount: 5, threshold: 0.1 — самое то если Вы не умеете пользоваться этим. Можно увеличить радиус до 1 и постепенно прибавлять amount, пока резкость не начнёт «бросаться» в глаза, после чего вернуться пред-пред-предыдущему значению:) Самый, на мой взгляд, отличный вариант это применять резкость к предварительно уменьшенному изображению: Скажем, 1. уменьшить до 320х240, 2. применить резкость, а потом 3. доуменьшить к необходимому размеру, например, 160х120:) Хороший результат требует ресурсов. Ахтунг: В зависимости от версии php+gd резкость может не применяться...!
Фотка в обложке ну никак не выводится!!!! Просто ссылка текстовая на галерею. Скриншоты все сравнила, вроде все так же.
Какой параметр за нее отвечает?
Поясню поподробнее. Есть ссылка в главном - Фотогалерея
ОТкрывается страница - на ней список из трех созданных мной галерей - в виде их названий - гиперссылок на сами галереи.
А можно к названиям добавить картинки-ссылки? И какие это будут картинки - специальные или, например, первая добавленная в галерею?
Очень нужны здесь картинки. Они должны были появиться при правильной настройке согласно это статье?
Попробуйте удалить списки и импортируйте те, которые я приложил к руководству.
Модуль Views Attach установлен патченный?
Нашла таки ошибку в списке gallery cover! Спасибо за статью!
А можно сделать возможность для уже размещенной картинке менять галерею? Пока получается только удалением- вставкой.
Использую тему Garland, если сузить окно обозревателя, превьюшки галереи наезжают на меню в правой колонке. Как этого можно избежать?
В данном случае изображения выводятся в стиле Grid, а это - таблица. Можно поменять стиль на List Style, наприммер, в CSS темы добавить что-то вроде
.view-gallery li{ float: left; list-style: none; }
Ссылка Add Photo а альбоме видна только админу, соответственно никто не может добавлять фотографии. Копался в разрешениях - ничего. У ролей вроде все необходимые разрешения есть. Не подскажете, в чем проблема?
if (.... && user_access('create ' . $field['type_name'] . ' content')) {...
?>
В модуле есть проверка прав пользователя на создание типа материала. Есть и другие проверки, но если под админом показывается, значит дело только в этом.
Спасибо! Закомментил - заработало.
Нет, так не пойдёт
user_access системная функция, а значит у Вас неправильно настроена система. Внимательно посмотрите разрешения, - есть ли у нужных пользователей право "create image content" (и заодно "create gallery content")?
Модуль Content Permissions включен?
Вы другим пользователем пробуете добавлять в существующую галерею или им же создаёте галерею, а потом добавляете?
Заработало. В Content Permissions не стоял чек на edit field_gallery
Спасибо!
Даниэль, что за динамо происходит с моим заказом??!
В аське и почте ты мои сообщения игнорируешь, я уж думал мало ли что, человек в больницу попал! А оказывается он жив-здоров, общается на форуме.
Надеюсь услышать _убедительные_ объяснения происходящему.
Дан, такая ситуация.
Все сделал, все красиво работает, но появилась проблема.
Неопытные пользователи заходят в Галерею, тыкают на фотку и им открывается фотка, после чего они ее закрывают.
Суть, как сделать так, что бы при клике на изображение (cover gallery) открывалась галерея, а не превьюшная фотография.?
Спасибо
Как интегрировать с swfupload для загрузки фотографий оптом?
В настройках поля Image выбираете соответствующий виджет, в его настройках Storage mode: One image per node и не забудьте указать Redirect url, чтоб после загрузки возвратиться в галерею.
Я так понимаю при этом swfupload будет работать на странице создания ноды типа image? Как-то не логично получается...
Почему же? Все логично. У вас создастся энное количество нод типа Image с ссылкой на соответствующий альбом. Все работает, я проверял.
1. Для начала можно вообще убрать ссылку, дабы неповадно было -- Views: gallery, Дисплей: Gallery cover, Поле: Content: Image; снимаем галочку "Link this field to its node"
2. Ну а теперь можно навесить свою ссылку. Для этого нам потребуется установить связь (Relationship). Добавляем новую связь (в блоке Relationships) -- Content: Gallery, затем добавляем новое поле -- Node: Nid, настройки поля: Связь (Relationship): Gallery, Exclude from display: on (исключить из показа). Теперь надо изменить сортировку полей - это делает кнопочка с двумя стрелками, рядом с плюсиком у полей - поле Node: Nid должно быть первым. Теперь подредактируем поле Content: Image -- Output this field as a link: on (выводить это поле как ссылку), Link path: node/[nid]
Сохраняем всё.
Конец.
Вам уже ответили. Может и нелогично, но думаю без строчки кода тут не обойтись. Будет время - посмотрю как добавить ссылку в галерею.
Просто было бы лучше на странице редактирования галлереи загружать картинки.
Здравствуйте!Подскажите, плиз, у меня при нажатии на кнопку "Загрузить фото" выводит следующую ошибку: Произошла HTTP ошибка 0. \n/?q=filefield/ahah/images/field_image_image/0. Как мне от не избавиться?Может я модуль filefield неправильно установил?Может его надо в папку с модулем CCK закинуть?
Как прицепить Lightbox2 ?
кто нить ответит на вопрос?
1. Устанавливаете модуль.
2. В настройках типа содержимого Image выбираете у поля фотографии отображение Lightbox.
В Internet explorer 8-ой версии в варианте отображения GRID фотки галереи отображаются сжатыми в ширину, например 12 px вместо 80. В режиме HTML список или Unformatted все нормально. Та же проблема в некоторых версиях Оперы. Никто не сталкивался с такой проблемой?
Подскажите, почему могут не отображаться картинги в списке галерей (“обложке”) для незарегистрированного (анонимного) пользователя? Как это можно изменить? Разрешения для этого пользователя отмечены все, какие есть. Для зарегистрированного пользователя все работает. Списки импортированы из этого руководства.
Не могу сохранить Viwes в первом шаге(Список галерей) при сохранении постояно вы водиться
"Display "По умолчанию" uses fields but there are none defined for it or all are excluded."
и если кто может подскажите другоё более лёгки способ по созданию вот таких страничек(http://onlineguru.ru/).
Мне нужно создать страничку на которой будет выводиться сеткоё по 12 материалов с картинуами.
всё разобрался)
У swfupload отвратительная особенность, что при создании перевода ноды для мультиязычных сайтов, изображения не копируются... При этом если обратно установить просто image все ок.
Создал галлерею, через неделю увидел что обьем памяти уменьшилось. Как оказалось, при удалении рисунка из галлереи, в папках imagecache они продолдают своё существование... мда...
“Только не забудьте сбросить старые картинки (ссылка Flush у настройки)”
Вроде, помогает, если удаляешь картинку из галереи, ненужного не остается.
Естественно. Зачем отслеживать удаление _любых_ файлов на севере (а imagecache может работать с любыми файлами, доступными веб-серверу), когда можно раз в полгода делать очистку кэша картинок (flush)? А можно и не делать - место на хостинге стоит копейки и картинки - это не видео
Dan Хорошо, буду делать flush
Dan
Такой вопрос... Если я хочу сделать в блоке частичное превью этой галлереи (скажем 4 случайных галлереи из всех).
Я просто во view gallery_list добавляю блок, настраиваю его. Но он "сцепляется" с gallery_cover. А там картинки слишком большие. Как мне сделать новый дисплей или view чтобы в блоке картинки были маленькие?
views_attach, по сути, формирует тизер. Мы можем только заменить тизер на поля, но такого поля, как картинка у нас нет, для этого надо вместо views_attach использовать, например, node_reference.
Как вариант могу предложить отталкиваться от обратного - сделать рандомный вывод изображений, и связями (relationships) добавить описание галереи, к которой привязано изображение.
Я даже не знал (не зря говорят: век живи - век учись), что пользуясь грамотно аргументами можно вытворять такие штуки.
Спасибо автору за подробную инструкцию.
Это только верхушка айсберга работы с аргументами. Они гораздо мощнее.
Вливайся
насчет swfupload подскажите, пожалуйста, куда нужно тыкнуть, что бы он заработал?
у меня Image FUpload
поставил все как было сказано выше, но ничего не изменилось.
У меня он тоже не заработал для существующего типа материала. Создал новое - всё ок. Разбираться не стал. Попробуйте.
если просто заменить в данном примере в поле Image заменить Widget type: на Image FUpload, то в таком случае не создается столько нод сколько фоток, а в одну ноду сваливаются все фотки.
Как с этим боротся ?
спб, попробую.
удалил тип image, автоматом создался такой же тип (из-за модуля Image), далее в Storage mode поставил One image per node, в Redirect url поставил gallerys.
Все создаю галерею, нажимаю добавить фото, загружаю фото, нажимаю next step, done editing и тут начинается... перекидывает на node/add/image с сообщением "Страница не найдена
To create a new Image, a referenced piece of content must be specified in the link you followed."
фото в галереи не отображаются хотя все загрузилось прекрасно.
А при чём тут модуль Image? Это галерея делается без его участия.
Для модуля Image FUpload нужен модуль Image.
В материале Image, само изображение при небольших размерах прижимается к левому краю, как можно его центрировать?
"Image FUpload (Multiupload) which is an addition to image and CCK's imagefield module..."
Ставьте версию 3.
CSS?
а как сделать переключение между фотками в альбоме? чтобы при просмотре фотографии из альбома были стрелки Предыдущая и Следующая, как например у модуля Calendar
есть модуль http://drupal.org/project/prev_next, но он будет листать ноды внезависимости от привязки к галереи.
как варант, можно сделать дополнительный view, который будет отображать по одной картинке, привязанной к гелере. ну и вывести пейджер.
Подозреваю, сюда можно прикрутить Views_Carousel. Возможно ли?
возможно но тогда, как быть с коментами к фоткам, как их отображать с каруселью...
Dan, ну я так и думал, можно пейджер или свой шаблон сделать для вьюхи, с этим то я разберусь, а как организовать всё так, чтобы при нажатии на эскиз фотки в галерее открывалась вьюха с ней?
Возможно. Я вот думаю, может написать третий урок? Есть следующие темы урока:
- избавление от модуля views_attach (для повышения производительности)
- прикручивание lightbox/thikbox
- карусель
- загрузка множества фоток
Что интереснее?
Супер! Все интересно и хотелось бы почитать! Ну, в первую очередь, - карусль
Я уже описывал нечто подобное, примерно так, процитирую себя:
Только надо поменять путь с node/[nid] на путь , который ты задашь для своего view. Но это я описал для перехода с "морды" галереи, а не картинки, учти! Переход с изображения на изображение как-то странен, не находишь?
Сделала именно так, однако при клике на любую превьюшку в галерее открывается всегда первая фота. Возможно ли сделать так, чтобы открывалась именно та фотография, на которую кликаешь и при этом тоже был виден пейджер? Как-то не соображу, как это сделать.
Сорри, надо было с цитированием сделать. Редко пишу здесь...
Т.е. я сделала все по Вашей рекомендации, только проблема осталась. Писала уже выше.
А вы не подскажете, как в любой из галерей в хлебных крошках внизу страницы добавить ссылку на страницу обложек галерей? Сейчас там только ссылка на главную. Буду очень благодарна.
Было бы интересно, ждем 3 часть.
Хлебные крошки обычно вверху страницы. По идее, в аргументах можно задать хлебные крошки (breadcrumbs). Попробуйте.
В моей теме хлебные крошки снизу. Попробовала для уже указанных аргументов gallery images и gallery cover указать значение
breadcrumbs - не помогло. Или нужно добавить новый аргумент? Тогда какой? И куда? В представление gallery_list?
Извиняюсь за возможную непонятливость, так как в представлениях только-только начала разбираться, а сайт нужно запустить к августу.
Добавил опрос
Подскажите, плиз, как можно реализовать галерею со следующей структурой: gallerys->фотогалерея ((cover) со множеством фото)->отдельное фото (размер регулируется через image_gallery_node_thumbnail)
Чем не подходит решение, озвученное в данном руководстве?
У меня при нажатии на gallerys выводится ряд фоток размером 150х150, при нажатии на ссылку галереи, например, "автомобили", (эту ссылку вообще бы убрать) в нем выводятся фотки 200х200, если из этой фотогалереи нажать сразу на фото, то выводится фото-оргинал размером каким закачан (никак не удается урегулировать этот размер - раздел "Загрузки файлов" не помогает - не меняет размер на нужный и не дает сделать, например, фото 500px на 100%), хотелось бы в таком случае такие фотки регулировать через imagecache.
Подскажите пожалуйста, а как вывести список категорий не через материал (Row style), а через Поля ?
Все выводится, кроме картинок....
Мне нужно что бы выводились превьюхи картинок в галереи горизонтально.
Например Таблицой : Название галереи - и тут пошли картинки
Да, у меня почему-то тоже не заработали. Есть несколько решений. Если ещё не решили - обращайтесь в личку подскажу.
Всё выводится через поля (Список изображений в галерее, пункт 3).
Всё проверено и должно работать. Ищите ошибку.
Так и есть, "Список изображений в галерее", пункт 1:
Style: Grid (стиль отображения - сетка). Number of column - 3 (в три столбца), Aligment - Horizontal (расположение - горизонтально)
Если не получается, то импортируйте типы материалов и списки, а потом изменяйте по своему усмотрению.
- Убирать заголовок-ссылку - модуль [module=auto_nodetitle]
- отображение картинки нужного размера при просмотре полной ноды -- display fields в настройках типа материала image.
подскажите , а как можно сделать такую вьюшку что бы в ней все картинки отображались в ряд...
те.
1 ряд одна галерея
2 ряд вторая галерея
и ...тд.
спасибо
ps. можно показывать в views другие views ?
Можно использовать views_attach для этого. В данном руководстве как раз описано подобное использование этого модуля. Только здесь настроен показ одной ноды (обложка галереи), а Вам надо сделать несколько.
а как сделать чтобы все были ноды в одном views
вот этого не могу понять
спасибо
Есть "Gallery List" - список галерей. Каждая галерея - это обложка и описание. Обложка - это одна нода. Сделайте вместо обложки список из нескольких нод. Для этого надо всего лишь изменить кол-во нод отображаемых в анонсе галереи (с единицы на что нужно).
Dan по мотивам http://drupal.org/project/views_gallery
Ну дают Уже накатали модуль ))
подскажите , а как можно сделать массовую загрузку картинок?
используйте модуль
... причём только версию 3.
Вот эту версию 6.x-3.0-rc2 или dev?
Пусть говорят что хотят, но этот детальный мануал очень полезен при создании галереи. Пусть метод тяжел, зато я перестал кусать локти и что-то осознал в этом Views.
Большущее человеческое Спасибо!!!
я дев пробовал, норм
что-то не как не могу понять как это дело прикрутить, стал редактировать поле Image в типе материала Image , поставил там File -> Fupload , но все равно только одна картинка для выбора при добавлении в галерею...
Что не так...
Юзаю DEV версию...
поставьте Количество значений: Без ограничений
не помогло, там просто появляется форма что бы добавить ещё картинку а затем 2 картинки склеваются в одну и добавляются в галерею как 1 картинка...
Надо указать, что необходимо создавать отдельные ноды для каждого изображения, иначе будет создаваться одна картинка, как и прописано в типе контента image.
да так и делаю в настройках...не появляется даже форма мульти загрузки картинок
http://drupal.ru/node/30643#comment-166064
Ну когда же появятся обещанные, долгожданные продолжения?
Сорри, всё никак не высвобожу время. Постраюсь на этой неделе.
2 Dan
Спасибо большое за полезную инфу!
Вопрос чайника:
Подсажите плз, как масштабировать изображения динамически, чтобы они всегда умещались в размер основного блока. Иначе большие изображения вылетают за пределы экрана(блока content) и не хватает полосы прокрутки чтобы их посмотреть.
Разрешения экранов могут быть очень разными, статическое масштабирование не очень удобно.
Использую:
Drupal 6.13
Content Construction Kit (CCK) 6.x-2.4
ImageCache 6.x-2.0-beta9
Views 6.x-2.6
ImageField 6.x-3.1
ImageAPI 6.x-1.6
Views attach 6.x-2.1
Тема:
Collab 6.x-1.x-dev (2009-Май-29)
ЗЫ
Если необходимо, могу выложить ссылку на сайт.
Не думаю что это хорошая идея. Как сделать не знаю, разве что используя width&height атрибуты тэга img, динамически их менять при изменении размера контейнера.
Думаю лучшим вариантом будет использование overflow:hidden; для контейнера.
А как сделать чтобы у каждого пользователя были свои галереи?
Чем короче вопрос тем длиннее ответ.
Не вижу проблем - раздайте права. Каждый пользователь сможет создать и редактировать свои галереи и изображения.
Прошу прощения разобрался) действительно стоящий рецепт) Огромное спасибо.
Dan, если интересно, вот здесь можно посмотреть галерею, построенную по вашему описанию, в действии
http://www.embgallery.com/photogallery
Спасибо за статью!
Вопрос к автору материала:
1. Хочу сделать папки галерей вложенными (Путешествия: Египет, Чехия...). В какую сторону копать, какие доп. модули, стоит ли использовать таксономию?..
2. Для использования карусели - необходимо создавать еще один вид (для отображения снимка, выбранного из карусели) или есть более прямой способ?
Блин, сделаю наконец, обязательно поделюсь!
Заранее большое спасибо!
Не понимаю, почему у меня не отключаются комментарии к галереи? Простите за нубский вопрос.
Захожу в admin/content/node-type/gallery отключаю комментарии о форма для добавления, ну или ссылка на добавление всё равно есть. Необходимо отключить их для галереии, а для изображений оставить.
1. Сложно ответить. Это вопрос архитектуры. Можно и таксономию, можно node_reference, можно хоть на меню.
2. Думаю что можно обойтись и созданием дисплея в списке отображения галрей (тип - блок).
Чтобы ответить на вопрос, необходимо данный баг воспроизвести, я не смог - при отключении комментов их нет.
Как можно сделать подобную галерею с превьюшками на основе таксономии?
Сделал view, который в зависимости от аргумента (id термина) выводит картинки, а как сделать view, который из каждого термина выводил бы по картинке, причём чтобы картинка была ссылкой на первый view с соответствующим аргументом?
Если я правильно понял вопрос, то я не знаю ответа
Ссылку можно переопределить (Output this field as a link). Я отвечал на пару похожих вопросов в этом треде подробно.
Как вывести только те ноды, которые соответствует термину открытой ноды?
Попытался получить ID термина через taxonomy_get_node_terms (в валидаторе аргумента), да что-то никак достучаться до нужного элемента не могу.
----
Полдня промучился. [term_id] и все. Как работает так и не понял.
2MIR: ты выводишь блок с материалами, который должны быть привязаны к тому же термину, что и нода, которая открыта в настоящий момент?
При создании фото на странице node/add/image, а не на странице галереи по ссылке "Добавить фото" сообщение:
To create a new Фото, a referenced piece of content must be specified in the link you followed.
Оно и логично, ибо фотогалерея не указана.
Пока писал вопрос, нашел ответ, вместо "Display page not found error" ставим "Use select list widget" в CCK поле /field_image_gallery. Видимо пропустил в описании
Посмотрите внимательно на скриншот: http://drupal.ru/files/Screenshot-1.png, разве там "Use select list widget"?
В этом и фишка, иначе использование node_reference_url не имеет смысла - можно сделать и просто node_rference.
А разобраться в чём собственно фишка модуля - Вам на домашнее задание
Dan, а разве не удобней, когда фотографии можно добавлять и с самой фотогалереи, при чем сразу с привязкой именно к этой фотогалереи, и отдельно, создавая фотографию, указываем фотогалерею. Именно так я и сделал, чтобы мои пользователи не задавали лишних вопросов типа "Я хочу создать фотографию в альбом. Зачем мне при этом открывать сам альбом?". Таким образом имеем два варианта добавления фотографий, и овцы сыты и фишка модуля работает.
Кстати, спасибо за хорошую статью. Когда ждать третью часть с массовой загрузкой фотографий?
Огромное спасибо за очень интересный материал!
У меня все описанное в статье получилось с первого раза! Узнал много нового!
Увы множественную загрузку фото по непонятным причинам сделать не получилось ставлю модуль
"Image FUpload (Multiupload) which is an addition to image and CCK's imagefield module..."
Настройки его появляются, а результат настройки отсутствует. Ставил как 6.x-3.0-rc2 так и dev версию. В чем дело не понял
Попытался поставить вместо этого swfupload и jquery_plugin заработало, но не так как хотелось бы ( к материалу прибавляется куча ссылок на загруженные картинки, а не картинки вставляются в галереи...
Вообщем, очень жду продолжения!
Еще раз ОГРОМНОЕ СПАСИБО!
Вопрос чайника:
Подсажите, плз, как:
сделать имя фотографии(name) необязательным для заполнения полем?
переименовать ссылку на конец списка в листалке(pager) из "последняя" в "крайняя" ?
Спасибо!
[module=node_autotitle]
/admin/build/translate/search - найти и изменить
Вопрос чайника:
Подсажите, плз:
Можно ли включить Ajax+caching для views и в каких display это делать.
Как включить CCK image_fupload?(включаю необходимве модули, меняю widget type картинки на image_fupload - не получается)
Запрос /?q=%2A Раз в пять минут. Кто-то балуется?
Спасибо!
Вопрос чайника:
Подсажите, плз:
Как сделать ссылки вперед/назад для просмотра отдельной картинки? Надо ли для этого создавать отдельный view для image?
Спасибо!
Ajax+caching включать можно. Есть некоторые ограничения на их работу (читать - глюки), это проверяется проверкой. Пробуйте. Про запрос - не знаю.
Видел модуль наподобии [module=prev_next], но где можно было "привязаться" к views, а не типам материала, как в prev_next. Название не помню, к сожалению.
Дан, а выложи экспорт этого views в виде файла, мож действительно - сообщество доведет до ума
2andypost@drupal.org: И ты, Брут, [не читал внимательно]!
В конце поста есть ссылки на экспорт списков и типов материалов.
Дело в том, что я с точки зрения обычного пользователя - вижу текстовые файлы, но не написано, что с ними делать... Мож в процессе возникнет идея сие завернуть во что-нить более-менее "коробочное", "версионное" и "обновляемое-расширяемое"
Уже - [module=views_gallery], как раз сделали по скринкасту
Подскажите пожалуйста что надо прописать в настройках path поля images чтобы изображения сохранялись в определенные папки, например если галерея называется "Gallery_1" - то при сохранении в ней изображений создавалась папка Gallery_1 в папке defaults\files и изображения сохранялись в ней. Т.к. получается галерей много(около 30) в каждой по 20-30 фоток и вся эта масса лежит в папке defaults\files.
Стоит модуль token но он для path предлагает только следующие варианты:
User tokens
[user] User's name
[user-raw] User's unfiltered name. WARNING - raw user input.
[uid] User's ID
[mail] User's email address
[reg-date] User's registration date
[reg-since] Days since the user registered
[log-date] User's last login date
[log-since] Days since the user's last login
[date-in-tz] The current date in the user's timezone
[account-url] The URL of the user's profile page.
[account-edit] The URL the user's account editing page.
Location tokens
[location-name_N] Location Name (If there are multiple locations per node, N is the iteration, starting with 0)
[location-street_N] Street (If there are multiple locations per node, N is the iteration, starting with 0)
[location-additional_N] Additional (If there are multiple locations per node, N is the iteration, starting with 0)
[location-city_N] City (If there are multiple locations per node, N is the iteration, starting with 0)
[location-province_N] State/Province (If there are multiple locations per node, N is the iteration, starting with 0)
[location-province_name_N] State/Province Name (If there are multiple locations per node, N is the iteration, starting with 0)
[location-postal_code_N] Postal Code (If there are multiple locations per node, N is the iteration, starting with 0)
[location-latitude_N] Latitude (If there are multiple locations per node, N is the iteration, starting with 0)
[location-longitude_N] Longitude (If there are multiple locations per node, N is the iteration, starting with 0)
[location-country_N] Country (If there are multiple locations per node, N is the iteration, starting with 0)
[location-country_name_N] Country Name (If there are multiple locations per node, N is the iteration, starting with 0)
Global tokens
[user-name] The name of the currently logged in user.
[user-id] The user ID of the currently logged in user.
[user-mail] The email address of the currently logged in user.
[site-url] The url of the current Drupal website.
[site-name] The name of the current Drupal website.
[site-slogan] The slogan of the current Drupal website.
[site-mission] The mission of the current Drupal website.
[site-mail] The contact email address for the current Drupal website.
[site-date] The current date on the site's server.
[site-date-yyyy] The current year (four digit)
[site-date-yy] The current year (two digit)
[site-date-month] The current month (full word)
[site-date-mon] The current month (abbreviated)
[site-date-mm] The current month (two digit, zero padded)
[site-date-m] The current month (one or two digit)
[site-date-ww] The current week (two digit)
[site-date-date] The current date (day of month)
[site-date-day] The current day (full word)
[site-date-ddd] The current day of week (abbreviation)
[site-date-dd] The current day (two digit, zero-padded)
[site-date-d] The current day (one or two digit)
[page-number] The current page number for paged lists
Заранее спасибо!
не заметил - тут реализовано добавления фотографий ТОЛЬКО в СВОИ галереи или галереи общие для всех? Или это предлагается через хуки делать - вырезать лишние галереи из списка доступных галерей при добавлении картинки?
Есть ли возможнасть добавлять по несколько фотографий за раз? Существуют ли вообще возможности в Друпале добавлять архивы с фотографиями, чтобы они распаковывались в нужную галерею? Какие-нить модули с таким функционалом имеются?
Еще такой вопрос: как избежать дублирование фотографий в галереи при двуязычном сайте - а то забиваешь в одну галерею 30 фоток по одной(+1 жду с нетерпением 3-й статьи о множественном добавлении фоток), а при переводе(использую модуль i18) приходится опять забивать 30 фоток - и долго и места в 2 раза больше под сайт надо, а если языков не 2 а несколько???
Serega_od, для того, чтобы реализовать этот функционал нужны
field_paths и fields_path_alias, названия не точно:) Оба модуля есть как рекомендуемые на странице imagefield или filefield.
Списка доступных галерей не будет - пользователь вообще не выбирает галерею, она проставляется автоматически. Про доступ уже не помню - попробуй посмотреть сам
Да - через flash или через ftp+zip-файл.
К сожалению не подскажу - не тестировал галеру на мультиязыках.
Если будет время не могли бы написать поподробнее как через флеш. Спасибо.
Видал только через Ява-апплет, но там не создается автоматом ноды для каждой картинки. Просьба кинуть ссылку на работающий пример.
У меня не отображается ссылка "Add photo".
[module=image_fupload] - работающий пример на локальном можно сварганить за 5 мин.
В руководстве ошибок пока не замечено. А вот при создании ошибиться легко. Проверьте ещё раз все настройки или импортируйте мои.
не разобрался с image_fupload, во-первых он требует модуля image.
Если Вам не трудно - опишите пожалуйста какие именно надо произвести шаги чтоб появилась мультизагрузка, используя модуль image_fupload.
Спасибо!!!
Это для третьей части хауту, которое я обещаю уже года три как
К тому же может Вам стоить почитать комментарии в этом топике?
Я все прочитал, как и с этой части так и с первой.
Мои попытки:
1. Поставил модуль [module=swfupload] - мультизагрузка не появилась как собственно и поле f_uploads в manage_fields. Затем удалил.
2. Поставил модуль [module=image_fupload]- О_о, в группе CCK в установках модулей в админке появился модуль CCK_FUPLOAD_FIELD - активировал его. Перешел в тип контента Gallery image - грохнул старое поле image, создал новое поле image типа file -> widget:fupload -> в настройках указал One image per node.
В разрешениях(permissions) для mass upload images раздал права.
И таки да - теперь при нажатии на кнопку add photo в галереи появилось что-то похожее на мультизагрузку, вот только нет кнопки добавления изображений JavaScript включен.
Что я уже только не делал и установил дополнительно модули [module=image]и [module=swfupload] и [module=jquery_plugin] - и поменял тему на Гарланд. Нифига зловещая кнопка так и не появилась
Вот скрин:
Это тоже было прочтено: http://drupal.ru/node/30643#comment-166598Похоже, что прочитали...
У меня он тоже не заработал с первого раза. Удалил тип контента и сделал заново.
А что у Вас именно не заработало? Тоже не было кнопки "Добавить"?
Только контент пересоздать? Views не надо трогать?
Вобщем пересоздал тип контента Gallery images - результат тотже - кнопки нет
Всё, проблему решил http://drupal.ru/node/34923
Подскажите пожалуйста что нужно поставить в настройках image_fupload в Redirect url чтоб происходил редирект на галерею в которую только что добавили картинки?
Подскажите пожалуйста, почему картинки не отображаются, показывает только как маленькие иконки...
Пока не решал эту проблему - там думаю надо альтерить форму и добавлять в неё галерею.
Ищите ошибку в настройках, должно работать.
Такой вопрос: А если у галлереи есть некоторые CCK поля (Дата создания, стиль, кто на фото), а мы хотим вывести эти данные на странице каждой фотографии, прикрепленной к каждой галлерее.
Как настроить views?
Не вижу проблем -- добавить новые поля. Или где-то закавыка?
CCK nodereference Поле "к какой галерее крепить" уже есть. Вопрос в том, чтобы показывать не в галерее поля изображения, как у вас, но и в изображении показывать поля галереи
http://easycaptures.com/8197554839 . Только вместо "квартира" - "фотография", вместо "дом" = "галерея". Спасибо penexe :).
Кстати exposed фильтр (или подобное) можно добавить, чтобы искало фотографии, а поля были галерей? Например, все фотографии из альбомов, созданных раньше 2009. Или все фотографии из альбома "Кот". Я добавил один (по дате создания галереи, указал, relationship: галерея). В итоге после поиска пустой экран
разобрался
а есть ли патченная версия Views attach 2.2 - выложена только версия для 2.0 вроде. Или где то в тексте проскальзывала?
как разграничить права пользователей на добавление в галерею? Как сделать так, чтобы пользователь мог добавлять только в созданные им галереи?
Недавно установил модуль - всё работало нормально без патча (и даже без модуля token)
Вопрос правильный, но я не смотрел на эту тему. Думаю проблема для node_reference решаема, надо поискать.
Подскажите пожалуйста, в Views gellery такая ерунда:Поля
The style selected does not utilize fields.
Хотя поля я создавал
Все настроил, только когда выхожу из администрирования картинки пропадают!!! Помогите пожалуйста...
Настройте права.
Супер понравилось! очень полезная статья, ибо для меня было тайной как можно создать подобную галерею с помощью ССK и Views.
Есть несколько вопросов:
1. как можно сделать, чтобы картинка самой галереи вела не на конкретную картинку, а на галерею в целом? согласись, что логичнее показывать галерею, если человек кликает по картинке.
2. как можно сделать, чтобы заголовки к картинкам в галерее можно было добавлять по желанию, а не в обязательном порядке (они зачастую не нужны)
3. imagecache делает странную штуку с thumbnail'aми - независимо оттого, какое качество я ставлю в настройках
admin/settings/image-toolkit
admin/settings/imageapi
на выходе в списке галерей и списков картинок в галерее качество очень хреновое - ресайзил картинку из фотошопа - больше размер и лучше качество при тех же 75% сжатия. хз почему так. сами картинки в большом размере нормального качества.
Не сталкивался?
4. Еще странный alt текст у всех thumbnail'ов http://img137.imageshack.us/img137/1089/80195114.jpg
Спасибо!
1. Ответ я уже приводил подробно. Короткий ответ на вопрос - Rewrite the output of this field
2. Модуль auto_nodetitle
3. Что мешает поставить 100% или попробовать другой движок для изображений (imagemagic вместо gd или наоборот, смотря что стоит).
4. Ну либо, опять же "Rewrite the output of this field", если там можно переписать альт или темизация или модуль semantic_views.
"множественная загрузка изображений"
можно кратко куда копать? я увеличил количество загружаемых полей в cck, настроил пфддукн cover чтобы показывал первую картинку, но не могу настроить galley images чтобы при нажатии на превьюшку переходило на отдельную картинку, а не на пачку загруженную через cck...
Это две разные вещи. Картинки либо ноды, либо _части_ ноды.
В последнем случае данное хауту Вам не нужно - каждая нода, по сути, и есть галерея.
Доброго времени суток!
Заранее прошу прощения за глупые вопросы! Все делал по инструкции, но не могу понять где эта галерея находиться. По ссылке /gallerys пустая страница.
Как добавлять фотографии?
Галерея не одна. Их может быть сколько угодно - сколько создадите. Вот с этого и начните - Создать Галерею. Потом в галереи найдите ссылку Добавить изображение. Дальше понятно будет, думаю.
Спасибо! С галлерейей разобрался. Только хочу сформировать ее так как здесь: http://bashinform.ru/ Помогите пожалуйста как это делается!
Заранее прошу прощения если вопрос не по теме!
http://drupal.org/project/viewscarousel
никто так и не разобрался как сделать ссылки вперед назад на странице с отдельной фотографией?
чё там разбираться? сделай вьюшку, установи на страницу показ 1 ноды и пейджер тисни вперед-назад по выведеным нодам ( мне кааца).
Лучше подскажите как нарисовать кол-во фоток в галереи на обложке этой галереи? Во!
На самом деле подобные вещи, как то: обложка галереи, ссылки следующая предыдущая, кол-во изображений в галереи и т.д. надо делать полями, которые пересчитываются только при изменении галереи, иначе слишком много накладных расходов.
«чё там разбираться? сделай вьюшку, установи на страницу показ 1 ноды и пейджер тисни вперед-назад по выведеным нодам ( мне кааца).»
и как нажав на определенную фотку сделать чтобы она открылась в этой вьюхе с пейджером, а не первая страница пейджера?
Обнаружен досадный баг в ImageField - масштабирование превьюхи при загрузке изображений в поле происходит в обход ImageAPI что частенько вызывает нехватку памяти и ошибку загрузки.
Большая просьба протестировать патч и написать хотя бы "+1 to commit"
Dan,
а такого же материала по созданию хотя бы простенькой афиши концертов можешь написать? Чтоб понимание пришло...
такой вопрос!
1. сделал все по иструкции Views i CCK импортировал из статьи все заработало.
2. установил модуль Vote Up-Down
3. указал в настройках возможность голосовать за Image (т.е. только за картинки)
вот такая проблема админ может голосовать а пользователь у которого отмечены ВСЕ!!! поля на закладке admin/user/permissions, не может!
Где рыть ?
-------------------------------
Переделал заново все заработало !
Правильной настройкой. Кол-во должно быть прикрепляемых изображений должно быть - 1 (если у тебя загружается несколько, значит ты изменил это поле, а зачем?), плюс поставить настройку - одно изображение на ноду.
Не заработали права доступа, либо я не разобрался, либо действительно глюк.
Даю права изменять только свои галереи, а пользователь спокойно добавляет картинку в чужую. В чем проблема? куда копать?
Галерея же не меняется. Это архитектурная проблема. Надо писать пару строк в hook_nodeapi на операцию validate.
А можно этот момент так же подробно и понятно, как и саму статью? Честно говоря для меня это пока еще "темный лес". И
думаюуверен, что это очень многим тут будет полезно.Заранее Спасибо!
При сохранении (или предпросмотре) можно проверить данные введённые пользователем. В нашем случае можно проверить галерею, к которой прикрепляется изображение.
Примерно так:
<?php
function МОДУЛЬ_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($op == 'validate' && $node->type == 'image'){
$form = $a3; // для читаемости
$field_name = 'field_person_ref'; // это наше поле, в котором содержится ссылка на галерею
// эти все поля можно конечно и сократить, но я оставил для универсальности
$field = $form[$field_name][0];
$field_key = $field['#columns'][0];
$element = $field[$field_key];
$type_name = $element['#type_name'];
$delta = $element['#delta'];
$value = $element['#value'][$field_key];
$nid = NULL;
if (!empty($value)) {
preg_match('/^(?:\s*|(.*) )?\[\s*nid\s*:\s*(\d+)\s*\]$/', $value, $matches);
if (!empty($matches)) {
// Explicit [nid:n].
list(, $title, $nid) = $matches;
if(!empty($nid) && ($n = node_load($nid)) && !node_access('update',$n)){
form_error($element[$field_key], t('You may not add photo for this gallery!'));
}
}
}
}
}
?>
Код особо не проверял, 90% взято из nodereference.module и подрихтовано.
Спасибо! Вариант по реализации понятен, но ИМХО некрасив, поскольку нелогичен. ИМХО для тех кто не имеет право добавлять фото в данную галерею не должно быть видна ссылка "Add photo", зачем заставлять человека делать кучу движений, чтобы потом сказать, что ты не имеешь право это делать?
Этого при твоем варианте настройки поля Gallery в "Изображении" Fallback behavior: Display page not found error вполне достаточно (убрать "Add photo").
Мне же более логичным кажется вариант настройки "Use select list widget" и в этом случае, помимо убирания "Add photo" в выпадающем списке должны быть только доступные для пользователя галереи. Но вот как это сделать что то совсем не понимаю
Еще один забавный вариант галеры http://teddy.fr/blog/easy-and-maintainable-slideshows
Ну вы что хотите, всё сразу и на блюдечке. Убираете галочку "Показывать ссылку" и показываете её сами, используя тот же hook_nodeapi, только операция будет view.
Есть опция формирования списка по views - сделайте список галерей для текущего юзера и задайте этот список в настройках.
Большое спасибо за описание.
Подскажите, пожалуйста, как сделать gallery_list, который будет отображать не все галереи. Галерея о ежегодном конкурсе содержит галереи участников определенной категории.
Фильтр во views
Page not found
Альтернативы есть? или это временно?
Подробнее.
Указанная Вами ссылка http://drupal.org/project/node_autotitle не работает.
нет такой страницы на drupal.org .
http://drupal.org/project/auto_nodetitle
Как можно сделать так, чтобы в нодах изображения выводились в разрешении, допустим, 800х800, с помощью того же ImageCache, а при клике по ним, допустим, через LightBox открывалось полное изображение?
Все размеры указываются в настройках пресетов imagecache
ну это понятно, вопрос заключается в том, как поставить линк на клик на изображении и как сделать так, чтобы этот линк открывал ЛайтБокс
Если использовать модуль Lightbox,то он интегрирован с views.Внимательно посмотрите в настройках поля картинки,там можно выбрать селектом с какого пресета на какой открывать в Lightbox.
Так, насколько я понимаю, когда уже открывается полное изображение views не имеет к нему никакого отношения, это просто нода. А views используется для построения списков...
Кто нибудь знает,как вывести на своей страницей видов (грид,тизером или в таблице) картику галереи?
У меня выходит вывести всё что угодно,но не картинку,которая ассоциируется с той или иной галерой.Пробовал и аргументы всякие и relationship....
Иными словами,нужно типа того,что выводится на главной по дефолту.
Настройки отображения полей в настройках типа материала.
Ты имеешь ввиду полем, а не тизером? Имхо - никак. Для этого обложка альбома должна быть полем.
тогда я вас чуток неправильно понял
Я имел ввиду клик на превьюшки на странице галереи.
Если вы хотите показывать превью на самой ноде и при клике на неё открывать что-то в Лайтбоксе,то решение тоже несложное - как сказал Dan,или полностью переделать под себя шаблон ноды:
1)копируем ваш node.tpl.php и переименовываем в node-image.tpl.php (если у вас нода картинки имеет тип image)
далее темизируем
Нам необходимо вызвать картинку превью и поставить с неё ссылку на другой пресет или оригинал.В эту ссылку необходимо добавить тег rel="lightbox"
Подробнее об этом http://drupal.org/node/274487
Работает по методу Dan, большое спасибо, но чувствую что чуть позже все-равно придется использовать шаблон, для большего пространства для творчества.
В типе материала, в настройках поля картинки.
Спасибо огромное! Все так подробно описано.
Вроде все получилось... но..
Я совсем чайник и не могу разобраться почему при нажатии на превьюшку в галерее появляются два больших изображения? Второе оригинального размера под заголовком "Картинки:"?
Я так понимаю, вы делали сами, а не воспользовались импортом, ибо что-то пропустили или сделали не так.
Смотрите настройки отображения полей - скорее всего там.
Ага. Спасибо.
Простите за еще глупый вопрос) я тока начинаю осваивать Drupal)
Подскажите как вывести на странице сначала определенный текст, затем определенные картинки. Я так понимаю это реализовывается с помощью Views? По отдельности у меня получается, а вот как совместить и выборку нужных текстовых полей и выборку изображений?
Да, с помощью views - это очень мощный модуль, изучите его.
А как в нем совместить выборку картинок и выборку текста? Фильтры и аргументы дают возможность или то или другое. Методом научного тыка в просмотре все отображается с помощью дисплея attachment,но на страницу все не выводится..
Аргументы и фильтры не выводят, они фильтруют. Выводить можно или поля или материалы.
Дисплей attachment позволяет выводить несколько списков на одну страницу. Этот дисплей надо прикреплять к другому дисплею, например блоку или мтранице, а вот его уже и выводить где нужно.
Можно подробнее? Что значит "операция будет view"?
$op == 'view', см. [ru-api=hook_nodeapi]
Если не понимаете, то, думаю, не стоит пока этим заниматься.
Добрый день, пара вопросов если не трудно
1) как добавить переход между картинками при полном просмотре? Prev - Next
2) как добавить общую ссылку на все страницы галерее на ее индекс? Gallery Index
3) как интегрировать галерею в breadcrumbs - путь ?
и еще такой вопрос как быстро сделать копию, т.е. мне нужна копия галереи с другими названиями.
т.е. Gallery & Images и рядом Resources и Items
1. [module=custom_pagers]?
2. препроцессинг или правка шаблонов изображения
3. В препроцессинге или в [ru-api=node_api]
1) Спасибо.
2) спасибо
3) Страница не найдена
Покажите код.
А у меня почему-то не заработал этот модуль.
Подскажете как настроить?
Нет не подскажу - давно с ним дело имел.
Dan, спасибо.
Пейджер при просмотре полной ноды все-же нужен.
Попытки прикрутить разные модули "пейджеры", у меня не увенчались успехом.
Если кто-то знает как это сделать на 6 друпале - поделитесь!
а чем node gallery не угодил?
При написании данного руководства я преследовал цель показать сам процесс создания подобной галереи. Также было интересно сделать всё без строчки кода, что может быть полезно многим новичкам.
Конечно данное руководство полезно, но все же готовый модуль галереи есть, с пейджером в том числе, лучше всего его и использовать (это node gallery)
Дайте человеку рыбу и он будет сыт один день, дайте удочку - будет сыт всегда.
Node gallery - рыба, моё руководство - удочка.
Node gallery, неплохо, но там не понравилось что нельзя разрешить пользователям загружать фото в созданный альбом. Там пользователь чтобы загрузить фото создает свой альбом... А мне нужно чтобы пользователи вообще не могли создавать альбомы, а могли только загружать фото в открытые альбомы.
переводы -- drupaler.ru
Dan - про переводы это к чему?
Хм. Не знаю. Не в то окошко наверное
Dan. Готовите ли вы третью часть руководства? Если да, то о чем она будет и примерные сроки выхода? Насколько я знаю, вы недавно интересовались "каруселью" для галереи. Предположил, что именно о ней пойдет речь в перспективе. Я не ошибаюсь? Спасибо.
на этапе привязки field к контенту картинки, все время ставит "Content: Image Generic files" другое свойство не выставляется, равно как и Label не ставиться None, только "Widget label (Image)". Как бороться, подскажите?
Сейчас - нет. Возможно вернуть к тебе позже.
ImageCache установлен?
Не сталкивался с подобным никогда.
Несколько вопросов
вот етот код:
<?php
function МОДУЛЬ_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($op == 'validate' && $node->type == 'image'){
...
...
}
?>
в какой именно файл вставлять, в sites\all\themes\deco\template.php ?
или нужно создавать свой модуль , активировань его и потом только использовать
как именно будет выглядеть эта продцедура для удаления ссылки ДОБАВИТЬ ФОТО?
2. Как разрешить просмотр галерей только пользователям связанных с создателем фото галереи через user rilationship (пользователи друзья)
Ссылку можно убрать в настройках поля.
hook_menu_alter, переписываем проверку прав.
* Implementation of hook_menu_alter().
*/
function МОДУЛЬ_menu_alter($items) {
$items['node/%node']['access callback'] = 'МОДУЛЬ_node_access';
}
function МОДУЛЬ_node_access($op, $node, $user = null) {
// здесь пишем код проверки.
}
Для справки: http://api.drupal.ru/api/function/node_access/6
главная страница kofemakc.ru
в настройках Views вбил 20 Items per page. и все бы хорошо, но выводится сетка сами видите как - автоматически распределяя количество элементов по категориям (группировка выводимых материалов идет по названию taxonony term). Как ограничить количество материалов в каждой категории до 4?
то есть должно быть:
НЕ ТАК
категория1
кофе кофе кофе кофе
кофе кофе
категория2
кофе кофе кофе кофе
кофе
категория3
кофе кофе
а вот так:
категория1
кофе кофе кофе кофе
категория2
кофе кофе кофе кофе
категория3
кофе кофе кофе кофе
Делать вместо одно вьюса 5 или 6 (по количеству категорий) вообще не вариант.
Не знаю. Я так понимаю, views сначала делает SQL-выборку, а потом делает группировку. Не исключено, что средствами views эту проблему не решить.
на основе данной галереи + jcarousel сделал блок
и вот такая фигня в блок вывожу обложку галереи и заголовок
в Opra все видно нормально (т.е. видно три фотки) а вот в IE 8 и Firefox видны только 2 а вместо последней пустота.
Вот тут можна посмотреть: http://www.emigrantlife.it/drupal/
Подскажыте куда копать ???
Для отображения подправил файл .css
width: 185px;
padding: 10px 25px;
height: 175px;
}
.jcarousel-skin-tango .jcarousel-clip-horizontal {
width: 185px;
height: 175px;
}
.jcarousel-skin-tango .jcarousel-item {
width: 170px;
height: 175px;
}
.jcarousel-skin-tango .field-content A IMG {
border: 2px solid #fff;
}
И еще один момент, я использую тему (deco) если вывожу имя пользователя с названием поля (пример -> Автор: Админ) то Автор: в одной строчке а "Админ" в другой , как сделать все в одной ????
Можна ли с помощью .css ???
Если да то как ???
Надо внимательней посчитать ширину, не забывая про отступы (margin, padding) и бордюры. У тебя ширина клипа больше чем 185, поэтому карусель резервирует ещё место.
Это или в настройках CCK - отображение полей или в настройках views или CSS: display: inline или float: left или ещё как, собственно зависит где и как выводишь.
Уже 3-й день бюсь башкой о монитор что бы сделать НЕ ПОКАЗАВАТЬ ЛИНК "ДОБАВИТЬ ФОТО" в галереях если пользователь не является их создателем.
Вот что я сделал
1. в папке sites\all\modules\personal_modules создал файл personal_modules.module с вот таким содержимым:
//где field_image_gallery - поле в ССК ссылка на галерею к которой привязана фото
<?php function personal_modules_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($op == 'validate' && $node->type == 'image'){
$form = $a3; // для читаемости
$field_name = 'field_image_gallery'; // это наше поле, в котором содержится ссылка на галерею
// эти все поля можно конечно и сократить, но я оставил для универсальности
$field = $form[$field_name][0];
$field_key = $field['#columns'][0];
$element = $field[$field_key];
$type_name = $element['#type_name'];
$delta = $element['#delta'];
$value = $element['#value'][$field_key];
$nid = NULL;
if (!empty($value)) {
preg_match('/^(?:\s*|(.*) )?\[\s*nid\s*:\s*(\d+)\s*\]$/', $value, $matches);
if (!empty($matches)) {
// Explicit [nid:n].
list(, $title, $nid) = $matches;
if(!empty($nid) && ($n = node_load($nid)) && !node_access('update',$n)){
form_error($element[$field_key], t('You may not add photo for this gallery!'));
}
}
}
}
}
?>
2. Активировал модуль [admin/build/modules/list]
И НИКАКОГО ЭФФЕКТА захожу под одним пользователем и добавляю в галерею другого фото !!!
display: inline -- СРАБОТАЛО !!! СПАСИБО!!!
У меня этот код работал. Проверьте имена, сделайте дамп переменных.
Но сам процес верен что я описал, т.е. нужно создавать именно модуль ?
Да, всё верно.
Установил модуль tagadelic, создал словарь таксономии «Метки» и создал поле в Image – «Теги». При загрузке фотографии, пользователь может прописать к ней тег. Далее по тегам происходит выборка соответствующих картинок. Проблема в том, что при клике на теге (в облаке тегов) открывается список нод с полным размером фотографий, а нужно, чтобы открывалась сетка (как в Gallery image) с миниатюрами 200х200. Теги не контролируемы изначально и их задают сами пользователи. Не могу разобраться, как это все решить.
В поставке views есть отключенный список, который перекрывает вывод таксономии (путь taxonomy/term/%) включите его и настройте как надо.
СПАСИБО!
.
Подскажите как вывести количество фотографий в альбоме? и дату последнего обновления альбома.
Модуль [module=views_groupby], но проще ручками в запросе.
вылезают ошибки при использовании модуля...
ссылки в конце дают 403
http://drupal.ru/files/cck_image.txt
у всех так?
Замечательный урок, большое спасибо! Слепила свою галерею. Но столкнулась с такой проблемой. У меня для типа материала "Галерея" есть помимо поля "Заголовок" стандартное поле "Содержимое", в которое вводится описание галереи. Во вьюшке, которая выводит список всех галерей, красиво выводится в следующем порядке один под другим заголовок, потом описание галереи, а потом уже последняя добавленная фотография в виде обложки. Может кто подскажет, какой файл отвечает за шаблон этого вывода, чтобы я смогла в нем подправить вывод? Мне нужно, чтобы сначала выводился заголовок, а потом слева картинка, а справа от картинки описание галереи.
-
-
-
Порядок полей в типе материала надо поменять и поставить фото над содержимым.
Спасибо за идею! Попробовала, порядок вывода меняется. Если для картинки прописать float:left; обтекать картинку начинает в случае небольшого описания для галереи не только описание, но и все содержимое, которое располагается ниже. Наверное, малой кровью здесь не обойтись :-(.
для содержимого ниже clear:left тогда уж.
Еще раз скажу, что это отличный материал!
Сейчас сижу и думаю как можно доработать данную методику до необходимых мне требований, а именно в материале "Галерея" есть поле "содержание", в его вводе прикручен BUEditor, в нем есть возможность вставки картинок... Как сделать так, чтобы вместо стандартного IMCE появлялось окно в котором можно было выбрать только одну из картинок данной галереи, либо загрузить с пользовательского компьютера новую (создать еще один материал "изображение", добавляемый в эту же галерею), в идеале еще, чтобы картинка добавленная таким образом в содержимое переставала показываться в общей сетке галереи (зачем ее дважды дублировать на одной странице). В сторону каких модулей смотреть? Или это малореально?
Например node_reference - выбор нужной ноды с картинкой и её темизация при выводе именно через node_reference.
И?
Логика понятна, а с какой стороны подойти даже не знаю Если не сложно, расскажи поподробнее. Заранее спасибо!
Сделал все как написано и не работает Такое ощущение что Imagecache ваще не пашет. Вроде бы галерея создается, фотографии добавляются(на превью видно фото), но в самой галереи фотографий нет! В чем проблема?
П.С. Когда в ImageCache пресеты делал, он мне тоже там превью не показывал.
Отлаживайте imagecache. Если на хостинге установлен nginx, то проблема может быть в отсутвии нужных настроек.
la_speranza, попробуйте модуль [module=views_gallery] - там есть интеграция с [module=custom_pagers], который должен решить проблему.
Я эту проблему решал путём создания своей вьюхи с хитрым расчётом странцы в пейджере, но думаю вариант с custom_pagers чище и проще.
Я как раз использую views_gallery. Обязательно попробую custom_pagers. Спасибо за помощь )))
Dan, такой вопрос возник по custom_pagers. Модуль подключила, работает. Только вот есть неприятный нюанс - не могу привязать к конкретной галерее. Т.е. пейджер листает абсолютно все фотографии, которые были загружены. Если делаю привязку к галерее, то пейджера не видно совсем. В какую сторону копать?
Спасибо )))
а как листать может фотографии если вы не можете к галереи его привязать...
вот у меня галерея через скк и вьюху вставил кустом пейдж и он не появлялся... потом как то прописал... правильно... хлебные крошки и все появилось. а у вас какие проблемы?
На сайте предполагается несколько галерей.
Пейджер к галереям привязан, работает, однако он листает все фотографии, даже, если они относятся к другой галерее. Т.е. захожу в галерею, кликаю на превьюшку, открывается фото с пейджером, в котором указано 1 из 10. А в этой галерее всего 3 фотографии. Остальные 7 - в других. И вот пейджер так бодренько листает все 10 фотографий. А нужно, чтобы только те фотографии, которые относятся именно к конкретной галерее. Т.е. у меня не получилось разделить фоты. А если в фильтрах вьюса, который создала для пейджера, делаю в типе материала "фото" связь - "Галерея", то пейджера не видно вообще. Вот как-то так...
И что с этим делать, пока не знаю...
Настраивать пейджер нужно для списка изображений в галерее. Без этой настройки он будет работать просто как листалка материалов определённого типа (если я ничего не путаю).
Сейчас у мня времени нет всё ставить и проверять, если не разберётесь до среды следующей недели - пишите в личку.
Dan, написала в личку.
Так настрой сначала галереи что бы в каждой были фотки нужные и привяжи модуль листалки к галереи он и будет листать только те фотки котрые в галереи это конкретной. еще раз скажу у меня галерея скк + вьюха...
у вас как то подругому видимо.
У меня такая же галерея, только оформленная модулем views_gallery. А как привязали к галерее? У меня не получается ((( Листает все фоты подряд...
ну в листалке нужно прописать вьюху... где прокручиватся правильно
а как к миниатюрам во вьюхе прикрутить лайтбокс, так чтобы он листал все изображения в представлении а не только те которые на текущей странице. хотяб мысли идеи )
Здравствуйте. Если я правильно понял, то у меня похожая ситуация: в альбоме 70 фоток, через Views на страницу с пагером вывожу по 15 превьюшек. Приходится переключаться на следующую страницу, чтобы просматривать фотки в Lighbox.
У Вас получилось просматривать в Lightbox все фотки альбома?
Здравствуйте!
Спасибо за уроки.
Файлы экспорта, к сожалению, недоступны.
403 Forbidden.
Пожалуйста, дайте доступ.
Это не ко мне, а к хозяину d.ru.
Подскажите,что это за тип дисплея "Node content" . К сожалению, в списке выбора нет такого дисплея (в наличии: Page, Feed, Data Browser, Block, Attachment).
ааааа, views attach забыл подключить, проблемо финито
статья хороша
Возникла необходимость в списке галерей в тизерах выводить еще одно поле ССК находящееся в галерее. Поменял вывод с материала на поля, добавил поля Материал-заголовок, содержание-свое поле и материал-тизер... Картинка естественно не выводится Что нужно изменить, чтобы заставить ее отображаться?
Возникла проблема - в результате кривого обновления сайта вместо изображений выводятся пустые рамки(во всех вьюхах), хотя листалки присутствуют. Изображения как-бы есть, но не загружаются. Меня подвел кэш браузера - недавно просмотренные картинки грузятся отлично.
Каталог sites перенесен без изменений, версия drupal обновлена с 6,16 до 6,19, обновлены модули views imagefield cck filefield.
Сами файлы на месте, включая обложки, восстановление бэкапа БД не помогает.
Помогите, пожалуйста, определить хотя бы какой модуль за только картинки отвечает или какие логи смотреть.
Смотрите какие формируются пути. Скорее всего проблема с imagecache.
а где смотреть? логи субд?
HTML страницы.
://sitename/?q=system/files/imagecache/image_gallery_teaser_thumbnail/045.jpg
://sitename/?q=system/files/imagecache/image_gallery_full/%20%D0%B1%D0%B0%D0%B1%D1%8B%D1%88%D0%BA%D0%B0%20003.jpg
вроде бы все корректно ...
все файлы присутствуют, имена правильные.
хотя картинка отсутствует даже здесь, на тестовой ссылке настройки самого модуля imagecache
://sitename/?q=system/files/imagecache/image_gallery_full/imagecache_sample.png&1281991247
Проблема решена:
http://drupal.org/node/224913
Зашел в администрирование-настройка сайта-файловая система
и поставил публичный метод вместо приватного
Это нормально - публичный метод загрузки? И почему появилась проблема, если БД никто не трогал?(я правильно понимаю, что все настройки хранятся в БД?)
БОЛЬШОЕ СПАСИБО! Без наводки на imagecache - не разобрался бы.
Нормально. Приватный нужен для ограничения свободного доступа к файлам.
Сомневаюсь, что БД никто не трогал — imagecache не работает с приватным методом, либо у вы поменяли метод, либо imagecache и не работал.
Обнаружилась еще одна неприятная особенность. При удалении галереи она удаляется, а связанные с ней ноды картинок остаются и становятся неудаляемыми пока у них не изменить привязку к галерее. Видимо надо писать функцию которая бы запускалась при попытке удаления галереи и удаляла сперва все связанные с ней ноды картинок. Я в правильном направлении мыслю или есть другой путь?
И более общий вопрос - у хука nodeapi в операция delete происходит сразу после удаления ноды, а в данном случае как я понимаю событие нужно отлавливать перед удалением, а не после. Какими средствами это можно сделать в Друпале?
В hook_nodeapi при удалении ноды объект ноды должен быть, т.к. хоть нода фактически удалена из базы, сам объект $node ещё существует. Используйте $node->nid для выборки всех изображений, привязанных к галереи, затем node_delete для каждого из этих изображений.
Как вариант, при удалении альбома, можно привязывать к специальному альбому "осиротевшие". Ещё можно заюзать модуль views_bulk_operations - сделать выборку осиротевших изображений и потом скопом их удалить или перепривязать.
Спасибо за предыдущий ответ!
И еще вопрос: При массовой загрузке в настройках поля картинки (Image fupload) есть поле "Redirect url:" в нем указывается куда происходит переадресация после завершения массовой загрузки картинок, если это поле оставить пустым, то переадресация происходит на node/add/image без аргументов, что приводит к ошибке 404. Как правильно настроить это поле чтобы после загрузки попадать в текущую галерею?
Скорее всего через hook_form_alter, подставляя нужный адрес.
Что то у меня не получилось
Хочется чтобы после первого шага загрузки вместо кнопки "next step" уже была кнопка "вернуться в галерею" а заголовок формировался по правилам описанным в auto_title.
Если делать кнопку возврата на первом шаге, то в таком случае не отрабатывает автоматическое присвоение заголовка. А на втором шаге уже в пути теряется куда возвращаться. Честно говоря, запутался как это сделать по человечески...
Пожалуйста, объясните, как решить продлему со знаком "+" в имени файлов, загружаемых на сервер.
Drupal говорит:
404: Unable to find sites/default/files/имяфайла.jpg
При чем, в ссылке, которая сгенерировала ошибку(которую смотрел юзер) - знак "+" есть, а в сообщении об ошибке - его нет.
То есть, какой-то модуль этот знак игнорирует. Я проверил - файл в
sites/default/files/
sites/default/files/imagefield_thumbs/
присутствует. Со знаком "+".
Хотя бы укажите какой модуль гуглить.
pathauto+transliteration+filefield_paths
ПРЕДВАРИТЕЛЬНО СДЕЛАТЬ БЕКАП БАЗЫ
поставить эти модули, в настройке автоматических синонимов (admin/build/path/pathauto) включить опцию «Убирать из строк символы, не входящие в набор ASCII-96» и «Транслитерировать перед созданием синонима» (чтоб включить - под галочкой прочтете что нужно сделать).Затем в настройке тип материала->управление полями->настройка вашего поля с картинкой - найти «филдсет Filefield path» и там выставить три галочки для очистки и ниже отметить «Откат обновлений» (Переместить и переименовать предварительно загруженные файлы.) и жмете «Сохранить изменения»
Dan, спасибо за статью. Перепробовал большинство галерей, но в итоге все равно все сделал как описанно тут.
У меня вопрос сходный с вопросом от Alex R. Я сделал гелерею, http://homeoffans.com/gallery но т.к. gallery list формируется из teaser'оф, то естественно отображаются аватарки, descriptions и имена создателей альбомов. Очень бы хотелось их убрать, что бы остались только название и превью (но в самих альбомах они были), но что-то у меня пока не получается... Я понимаю что наверное это не сложно, но как ? Вообще задать css для страницы с gallery list как нибудь можно ?
Rem, надо переходить на поля. Это будет сопряжено с определёнными трудностями, в частности с обложкой альбома. Но всё поправимо.
Dan, я про поля конечно понимаю, но я эти трудности пока преодолеть не смог
Alex R об этом конечно уже спрашивал, но никто не ответил. Попробую ему в личку черкануть.
Спасибо!!! Долго мучился, пока не забрел сюда
Возник еще один вопрос, потребовалось добавить и превьюшки картинок и линк "добавить фото" не только в саму ноду галереи, но и в страницу редактирования этой ноды. Сами превьюшки добавить оказалось элементарно - в Node content settings ставим: "Build modes: Full node, Edit page", а как быть с линком - всю голову сломал - может кто подскажет как его правильно туда внедрить?
Ну и уже извечный вопрос с переадресацией после массовой загрузки... похоже я его уже скоро буду готов перефразировать так "сколько будет стоить доработка загрузчика чтобы после массовой загрузки пользователь попадал на страницу галереи (или на страницу редактирования галереи) в которую он добавлял картинки".
Чуть подождите. Скоро вернусь к данному рецепту и смогу ответить на вопросы.
Подскажите, плиз, какие действия нужно предпринять, чтобы в настройках view появился блок Node content settings?
Разобрался, нужно было в модулях включить модуль Views attach, забыл про него.
Появились вопросы:
1. Как мне запретить пользователям добавлять фото в чужие галереи?
2. Как создать представление, которое бы выводило галереи пользователя? Я просто клонирую представление "gallery_list", но не могу настроить фильтр который отрубал бы всех остальных пользователей и выводил бы галереи пользователя на странице которого я нахожусь! Интересует только настройка такого фильтра (может быть не фильтра а аргумента), все остальное сделано.
Закачал в корневую папку модуль Views,а на сайте только это показывается, то есть модуль уже существует,но что то ему мешает запуститься.
Зависит от Ctools (не найден)
Требуется для Views exporter (отключен), Views UI (отключен)
Сейчас закачаю CTools 7.x-1.0-Alpha4, посмотрим как работать будет.
Спасибо, земляк, за статью. Черпаем понемногу.
Может подскажешь что: сделал тип данных - галерея. Из нее пытаюсь вьюсами показать картинки. В том же дисплее оформляю все как jcarousel. Так у меня все картинки из галереЙ, сводятся в одну карусель, а нужно на каждую галерею свою карусель. Не подскажешь, что настроить нужно?
А если не включпть тип дисплея карусель, всё нормально отображается?
хотелось бы увидеть обещанное продолжение, про массовую загрузку и вообще под друпал 7.
В D7 всё совсем по другому.
Времени пока нет на продолжение.
Dan,доброго времени суток,подскажите как мне подправить галерею,все сделал по вашей статье,устоновил Image FUpload,сделал для него поле в типе матерьяла image?все загружается вот толь после перехода в галерею картинок из списка галерей,при её открываний все фото выставлены в вертикальный ряд,одна за другой,а требуется в горизонтальный одна за другой.вот сылка на галерею http://www.happytime.md/show/?q=node/85
Я ничего не увидел на happytime.md, но догадываюсь, что надо выстраивать их в сетку с помошью CSS. Почитайте на тему display: inline-block и float: left.