Не так давно ко мне обратилась одна девушка с просьбой рассказать ей о самых-самых азах работы с модулем views в drupal. После небольшой переписки с ней я написал довольно подробную инструкцию, которую далее и привожу. Надеюсь, что это поможет не только ей.
Views – это не тип материала. При помощи этого модуля ты просто можешь делать страницы, для которых ты довольно много чего можешь настроить. В частности тебе надо настроить что надо получить (заголовок, автора, дату, полный текст, аноннс и многое-многое другое…), плюс ты указываешь параметры сортировки (по дате создания, по названию, по автору и по прочим полям. по возрастанию или по убыванию), а так же ты задаёшь условия выборки, т.е. из всех материалов, которые у тебя есть в базе какие именно материалы надо выбрать (например это условия: «тип материала=новость», «опубликовано»=да и прочее-прочее).Т.е. ты фактически задаёшь свой SQL-запрос.
Для работы с views на странице модулей у тебя должны быть включены модули: Views и Views UI. Там есть еще в списке Views Exporter, но он тебе пока что не нужен.
Теперь заходи на страницу: admin/build/views (тут и далее буду так писать страницы. Т.е. если у тебя на компе или в инете сайт на друпале открывается по адресу http://example.com, то заходи на страницу http://example.com/admin/build/views). Там ты увидишь что-то типа такого:

Нажимай вверху на кнопку «Добавить».
Увидишь вот такую страницу:
Заполняй поля названия и описания и жми кнопку «далее».
Увидишь:

Это основное окно для работы с views’ами.
Теперь будем создавать собственно само представление (в друпале часто название этого модуля именно так переводят). Есть два способа вывода контента: материал или поля. В первом случае материалы выводятся в обычном своём виде, т.е. там сразу выводится заголовок, который является ссылкой на весь материал, краткий текст, т.е. анонс (хотя можно и весь вывести если надо), информация об авторе (имя, дата публикации). А второй вариант, поля, это когда ты самостоятельно указываешь какие поля тебе выводить. Там больше возможности для настроек. Но пока что начнём с первого варианта.
Рааскрой пункт «row style» (для этого кликни по его значению) и укажи там галочку на «материал»
Нажимай «обновить». Тебе будет предложено еще указать кое-какие параметры:

Если убрать первую галочку, то будет выводиться не тизер (анонс), а полный текст материала. Вторая галочка ответственна за то, показывать ли под материалом список терминов таксономии, с которыми связан этот материал. Вобщем это тебе не принципиально. А третья помоему за то, показывать ли число комментов и ссылку на комментирование. как-то так вобщем.
Оставляй как есть и жми сохранить.
Ниже на этой же странице есть блок «Live preview». После вышеуказанных операций ты там увидишь все своим материалы.
Идём дальше.
Надо указать фильтр материалов т.е. нам не нужны все материалы сайта, а нам нужны только материалы типа «новости». Для этого нажимаем справа от «фильтры» плюсик

и в открывшемся списке выбираем по чём будем фильтровать. В нашем случае это «Материал: тип»

Жми добавить и потов выбирай из списка тип материала, который хочешь видеть. Ну в моём случае это будут «статьи»
Нажимаем «обновить». Теперь в предпросмотре ты увидишь только вывод нужных тебе материалов. Теперь отсортируем (то, что ты говорила, что надо чтобы в обратном порядке было). Для этого нажимай на плюс в блоке над фильтрами, «Sort Criteria» (у меня на этом проекте старая версия друпаля и поэтому переводы могут не совпадать с теми, что у тебя).
Сортировать будем по «Материал: Post date», т.е. дата создания.

Далее тебе будет предложено задать порядок и детализацию. Второе тебе не принципиально. А вот порядок как раз тебе и нужен.

Я тут сам всё время путаю мне надо по убыванию или по возрастанию. Поэтому методом тыка всегда делаю. Поставь одно, нажми «обновить» и посмотри в live preview что получилось. если не так, то нажми на этот фильтр и поменяй порядок.
Вот примерно, что сейчас у тебя должно быть:
Но ето мы задали параметры для дефолтного вывода этого представления, а нужна страница. Да, у одного views’а может быть несколько представлений. Это очень удобно. Но тебе пока что нужна просто страница.
Для её создания в блоке слева в выпадающем списке выбери «страница»
и нажми кнопку ниже «Add display». У тебя слева появится еще одна как бы закладочка «страница»

Как видишь внизу выдаётся сообщение, что для страницы должен быть указан путь, а он у нас не задан. Всё правильно. В блоке «page settings» нажми на значение пункта «путь» и укажи там адрес, по которому ты хочешь попадать на эту твою страницу:
Нажимай «обновить» и затем ниже кнопку «сохранить». Теперь можешь открывать свою новую страницу по указанному тобой там адресу.
После того как это сделаешь рекомендую посмотреть там уже готовые views’ы. Они как бы дефолтом сразу есть, но на странице списка представлений они серенькие. Там можно нажать их включение и потом зайти в них и посмотреть что так и как.
А после этого всего перечитай еще раз ту статью, что я тебе кидал. После этого всего ты по идее хорошо уловишь суть этого модуля и чтол с ним можно делать. Вобщем настоятельно реконмедую пройтись по этому плану.
Вопросы? )






Спасибо!) кажется, я начал понимать что к чему)
Link | Апрель 1st, 2010 at 23:35
Может для нуба и интересно, а так ни слова определенного как определенно все что тут написано в этом виде не подскажет новичку нет алгоритма и примеров
Link | Апрель 12th, 2010 at 18:02
Скажите пожалуйста,
а если мне нужен вывод по полям но чтобы выводились анонсы новостей. как лучше реализовать? Создавать поле анонса (то как его привязать к ссылке подробнее?), либо есть еще варианты?
Link | Апрель 24th, 2010 at 22:22
для этих целей два варианта:
1. В настройках вашего представляния в пункте «Raw style» установите значение «материал» и после этого вам будет предложено указать как показывать материал (полностью или только тизер).
2 .Или же вы можете использовать в упомянтом выше поле значение «поля» и тогда в блоке настрое «Поля» добавьте поле «Материал: анонс» (ну или может называться «Материал: краткое содержимое»).
Касательно того, что вам это надо связать с материалом вашим так я тут не совсем понял что имеет ввиду. Если делать по первому способу как я тут описал, то ссылка на полный материал сама собой будет. Если же использовать поля, то есть три варианта:
а) добавить поле «Ссылка на материал». При его добавлении можно будет указать текст ссылки
б) При добавлении многих полей в их настройках есть пункт «Связать это поле с его материалом». Это собственно и означает, что надо сделать это поле ссылкой на материал. Для заголовков точно такая опция есть, а вот для анонса я не уверен и поэтому ниже привожу еще третий вариант
в) Предположим мы хотим сделать, чтобы весь текст анонса был одной ссылкой на полный текст. В настройках любого поля (в том числе и тизера) есть опция типа «Выводить это поле в виде ссылки». Когда поставим галочку, то появится еще ряд полей, первым из которых является поле пути, т.е. куда ссылаться ссылке. Нам тут надо, чтобы было что-то типа node/12. Если для страницы с таким адресом есть синоним, то при выводе именно синоним и будет выведен. Но нам надо, чтобы номер ноды подставлялся в адрес ссылки автоматически. Это просто. Добавляем еще одно поле: id материала (nid). Для него ставим галочку «скрывать из вывода», чтобы оно не показывалось. После этого изменяем порядок следования полей так, чтобы наш nid был выше поля анонса. Ну и теперь когда мы снова попытемся отредактировать адрес пути ссылки, то там мы уже можем использовать наш nid. Указываем там адрес ссылки: `node/[nid]` (без кавычек). Ну и есть еще один нюанс. У нас в тексте анонса может быть html. И когда мы обрамим это дело в ссылку, то может получиться бяка. Поэтому нам надо сперва поле анонс очистить от html. Делается это тоже легко. В настройках поля анонса ставим галочку «Установить для этого поля максимальную длину». Появится ещё несколько настроек. Среди них надо отметить опцию «Удалить HTML-теги.»
Ну вот вроде и всё)
Link | Апрель 24th, 2010 at 23:54
Создаю тип вида – блок. Табличное представление.
Мне нужно, чтобы чтобы среди прочих полей отображалось поле [teaser]. Всё отображается кроме тизера.
Если страница, то всё нормально.
Это что, запрет на показ тизера в блоке и его не обойти?
Подскажите, что можно сделать?
Link | Август 22nd, 2010 at 12:37
подобных ограничений нет. проверь, что у тебя в настройке поля «Материал: аннотация» не стоит галочка «Исключить из вывода».
А так же проверь, что у тебя сам по себе тизер есть. Напрямую в базе данных проверь
Link | Август 22nd, 2010 at 21:06
Проблема решена путем удаления созданного блока и создания его вновь в точности, как первый раз. Всё стало работать как надо.
Похоже был сбой.
Link | Август 29th, 2010 at 07:11
спасибо за статю – хоть что-то начал понимать)
только вот указываю адрес страницы, на которой необходим вывод материала, а он не цепляется(
как быть? Спасибо.
и еще вопрос как сделать такой же вывод как в админке друпала? (при нажатии на пункт,например, администрирование – выводятся все пункты меню с вложенными в них пунктами, на странице)
Link | Сентябрь 1st, 2010 at 15:17
точнее он цепляется, но изменений никаких нет(
Link | Сентябрь 1st, 2010 at 16:21
плохо понимаю что значит «не цепляется». скрин покажи где цепляешь и объясни понятнее.
Если ты про сам контент страницы «/admin», то помоему там используется отдельная функция. Можно покапать и найти её (по hook_menu определяешь из какого файла что отрабатывает по заходу в админке, а потом уже там смотришь детали). Или же что-то подобное можно сделать через views.
А если ты про саму менюшку слева развёрнутую, то это обычное поведение меню: когда находишься в самом глубоком уровне, то до него меню раскрывается. Плюс можно специально указать для разделом меню, чтобы они раскрывались. Будет пункт называться типа «expand» (развернуть, развёрнуто), как-то так вобщем.
Link | Сентябрь 1st, 2010 at 16:33
кстати если под тем, что ты «цепляешь, а он не цепляется», то если ты имеешь ввиду, что ты во views создал страницу и указал для неё адрес, а она по этому адресу недоступна, то у меня вот есть предположение, что ты просто не сохранил весь view.
Link | Сентябрь 1st, 2010 at 16:34
попробую изъясниться яснее – в настройках вьювса делаю страницу, в ней выставляю url, нажимаю сохранить, но на странице по этому url ничего не меняется
вот скриншоты:
http://picasaweb.google.ru/Khatkevich/qeSppG#5512187658187188274
Link | Сентябрь 2nd, 2010 at 07:48
так а в превью вьюса там что-то отображается? может просто по твоим критериям нету подходящего контента? потому как делаешь ты вроде всё правильно.
Ну и на всякий случай проверь, что у тебя нету какой-нибудь страницы с таким же адресом-синонимом. Как вараинт в этой своей вьюхе просто сам впиши какой-нить текст вверх или вниз и убедись, что он отображается на этой странице. Если да, то значит просто нету материалов, удовлетворяющим твоим условиям во views. Если нет, то надо копать в сторону адресов.
Кстати так же проверь, что у тебя используются старндартные шаблоны views, а не переопрделённые. А то может ты положил пустой файл-шаблона…
Link | Сентябрь 3rd, 2010 at 22:20