Настройка макета галереи в Drupal с помощью Views и CCK
-
06-07-2019 - |
Вопрос
Я создаю сайт галереи / альбомов в Drupal 6. Возможно, описание будет немного подробным, но все же по какой-то причине сложно создать галерею в Drupal простым способом.
На данный момент я использую комбинацию CCK + Views + FileField + ImageCache + Lightbox2.
Это позволило мне - создать тип узла Album CCK, который может содержать несколько изображений - создать представление, отображающее альбомы в формате 9x9 (используя пейджер и элементы в строке)
Но здесь есть одна проблема. Хотя основной вид 9x9 с альбомами отображается хорошо, когда я детализирую конкретный узел альбома, щелкнув его изображение, он отображает загруженные изображения узлов в вертикальном ряду , и я не могу контролировать его форматирование. р>
Видимо, у меня есть 2 варианта а) каким-то образом контролировать вывод html моего поля CCK с его файлами (делить на строки) б) или создать другой вид для отображения изображений из одного альбома
На данный момент я не уверен, какой из этих двух способов является лучшим и что конкретно мне нужно сделать.
а) Я могу создать файл node-album.tpl - но все его содержимое уже будет в одной переменной $ content, которую я не смогу разбить на 3 элемента подряд. Я не прав?
b) если я решу создать представление для отображения элементов из одного узла Album, я не уверен, как я буду ссылаться на него из родительского представления Albums. Проблема в том, что в разделе Поля представления я могу переопределить ссылку, но он предлагает только 2 шаблона замены для передачи потенциальному " дочернему элементу " view, которые представляют собой [title] и [field_images_fid] - достаточно ли этого для создания дочернего представления для отображения изображений из определенного альбома? Р>
Решение
Я могу создать файл node-album.tpl, но все его содержимое уже будет в одной переменной $ content, которую я не смогу разбить на 3 элемента подряд. Я не прав?
Вы правы и неправы. Р>
В своем файле template.php вы можете передать другие переменные в ваш node-album.tpl, вы можете передать переменную $ node и отобразить ее очень настраиваемым способом, хотя в дальнейшем это уменьшит гибкость, как если бы вы использовали другой модуль для добавления вещей в $ content вам придется отредактировать файл tpl для доступа к новым переменным. Р>
Для этого вы используете хук preprocess_page в файле template.php. Вы можете добавить переменные в массив $ vars и использовать их в файле node-album.tpl. Я думаю , что $ node уже будет определен в файле tpl, что, вероятно, облегчит вашу жизнь. Вы можете игнорировать контент вообще. Р>
Если это не сработает для вас, вы также можете создать собственный модуль и использовать hook_nodeapi и hook_theme для темы тем, что вам нравится, при этом используя $ content. Однако это может быть слишком сложной работой для вас (если вы хотите пойти по этому пути, ответьте, и я напишу отдельный ответ).
Другие советы
Я только что записал скринкаст, описывающий один подход . В комментариях довольно много дискуссий об альтернативных методах; Я бы определенно предложил использовать Прикрепление просмотров , если вы хотите больше контролировать презентацию самой галереи. р>