Как задать зависимость содержимого блока от выбранного узла

Главные вкладки

Аватар пользователя abgustav abgustav 17 сентября 2009 в 9:40

Здравствуйте.
Подскажите, есть ли готовые модули для реализации нижеизложенного или следует писать свой?
С каждым узлом ассоциировано изображение и небольшой кусочек текста (100-200 символов), которые нужно выводить в один и тот же блок. То есть при переходе на другой узел с помощью меню необходимо чтобы менялись изображение и текст в блоке.

Комментарии

Аватар пользователя abgustav abgustav 17 сентября 2009 в 10:28

Nikit wrote:
обычный блок, который по arg грузит связанный текст и рисунок. можно через views

Можно поподробнее, в частности, про arg - это, как я понимаю, аргумент, передаваемый из меню? Я представляю пока что Вашу идею как "написать сниппет" в блок, включить в блоке выполнение php-кода, а в сниппете будет функция которая своим аргументом будет иметь выбранный пункт меню, а выход брать заданным образом из Views". Нельзя ли привести образец такого кода - я новичок и пока что не могу быстро сориентироваться откуда взять аргумент и как завязать это со views.

Аватар пользователя Nikit Nikit 17 сентября 2009 в 10:52

"abgustav" wrote:
С каждым узлом ассоциировано изображение и небольшой кусочек текста (100-200 символов), которые нужно выводить в один и тот же блок.

как вы это сделали?

Аватар пользователя abgustav abgustav 17 сентября 2009 в 11:03

Nikit wrote:
как вы это сделали?

Никак. В голове - сумбур. Подскажите - возможно ли это сделать так: создаем тип содержимого "личная карточка" в котором будут текстовые поля "имя", "телефон", "должность", и поле для изображения (а как создать поле для изображения?). Потом эту личную карточку выводим согласно описанным в предыдущих сообщениях условиям?

Аватар пользователя abgustav abgustav 17 сентября 2009 в 12:17

Nikit wrote:
узел я понимаю вы имеете в виду материал, или список материалов?

Да, я имею в виду материал. Пункты меню ссылаются на материалы (node/<номер>), и к каждому материалу есть свои дополнительные материалы (которые я пока что не решил как вывести) карточка сотрудника (с которой сейчас борюсь). Сейчас я изучаю видеоматериал с http://www.drupal.by/node/165 - там описано как добавлять картинки в материал, и думаю как прикрутить этот урок к моей задаче. Правда там проблема - модуль imagefield установил, права на него есть, а тип поля "Изображение" или "Image" не появляется. Я делал update.php и запуск cron. Но тип поля не добавился. Или я вообще не в ту сторону копаю? (напомню, для меня сейчас главнее сделать вывод этой самой личной карточки)

Аватар пользователя abgustav abgustav 17 сентября 2009 в 13:59

Сейчас у меня получилось создать новый тип материала с несколькими полями - одним для изображения и несколькими текстовыми. Теперь как вывести этот материал в зависимости от выбранного с момощью меню узла?

Аватар пользователя Nikit Nikit 17 сентября 2009 в 14:09

материал, рисунок и текст делаешь также материалом, но добавляешь cck-поле node reference, это свяжет их. далее через views выводим рисунок и текст.
хотя если отношение однозначное, почему бы не положить рисунок и текст в саму ноду.

Аватар пользователя felix felix 17 сентября 2009 в 14:55

За вышеизложенный пост Nikit +

Возможен вариант более легковесный (если подойдет). Сделать карточку - страницей пользователя, а дальше стандартный блок Информация об авторе или готовый модуль
http://drupal.org/project/bloginfo

Аватар пользователя abgustav abgustav 17 сентября 2009 в 15:33

felix wrote:
Сделать карточку - страницей пользователя, а дальше стандартный блок Информация об авторе или готовый модуль
http://drupal.org/project/bloginfo[/quote]
Спасибо за предложение, но такой вариант не подойдет.

Аватар пользователя abgustav abgustav 17 сентября 2009 в 14:42

Дело в том, что одна и та же карточка сотрудника может быть привязана к разным материалам, т.е. отношение однозначное только в направлении материал>карточка. Node reference я добавил, со Views еще надо разобраться.

Аватар пользователя abgustav abgustav 17 сентября 2009 в 15:32

Помогите разобраться: как с помощью модуля Views вывести в в блок тот материал, у которого "Node reference" ссылается на определенный узел. Как я понимаю, там аргументы надо задать, а как их задать - пока непонятно.

Аватар пользователя Nikit Nikit 17 сентября 2009 в 16:56

добавьте аргументы, выберите параметр - при отсутствии аргумента - выберите php код, arg(1) будет номером nid.

Аватар пользователя abgustav abgustav 18 сентября 2009 в 14:01

Nikit wrote:
добавьте аргументы, выберите параметр - при отсутствии аргумента - выберите php код, arg(1) будет номером nid.

Спасибо. Не совсем понял, но понял что разобраться надо как работает модуль views. Выходные будут посвящены анализу документации, а возможно и исходников. А сейчас руководитель сказал что сайт выглядит не так как на макете, который он нарисовал, и нужно срочно сделать так, а что там у тебя работает или не работает - вопрос десятый. И взялся я за изменение темы.

Аватар пользователя Dan Dan 18 сентября 2009 в 15:11

"Nikit" wrote:
добавьте аргументы, выберите параметр - при отсутствии аргумента - выберите php код, arg(1) будет номером nid.

При отсутствии аргумента - взять его из URL.

Аватар пользователя Dan Dan 18 сентября 2009 в 15:27

В данном случае идёт разговор про NID - views его нормально выдерет.
В код не смотрел, но он наверное юзает menu_get_object. То есть все параметры по текущей ноде можно взять оттуда (ну и по другим , зарегистрированным в меню объектам тоже).