Вывод иерархических данных

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

Аватар пользователя vgo vgo 9 декабря 2016 в 16:30

Добрый день!
Начал разбираться с Drupal 7, возник вопрос, а я даже не придумал, как на эту тему погуглить.

Поэтому, извините, спрашиваю здесь.

Есть два типа материалов - A и B, К каждому ноду типа A привязан один или несколько нодов B (через значение поля).
Мне нужно, чтобы при просмотре ноды A, в том же или соседнем блоке открывался view с соответствующими нодами B.

ТО есть, я не только должен запустить открытие view, но и передать туда параметр для фильтра, правильно я понимаю?

Какими средствами это делается?

Комментарии

Аватар пользователя bumble bumble 9 декабря 2016 в 17:36

Если для связки использовался Entityreference/Nodereference - в настройках вывода (View mode, режим отображения) можно указать формат вывода, например "Тизер" ("Анонс"), и его уже настроить должным образом. Поле вывести в нужное место.

Если нужно именно разделение на блоки, можно воспользоваться доп. средствами, например Display Suite.

Аватар пользователя vgo vgo 11 декабря 2016 в 12:09

Идею я вроде понял. Да, это, вероятно, решит проблему, при условии, что я смогу импортировать (или как-то ввести после импорта) эти ссылочные поля. У меня есть файл с исходными данными (большой), я его преобразую в два csv файла, тоже немаленькие. Фактически, я могу при преобразовании сделать много чего, поскольку делаю я это самописной утилитой.
Но как сделать импорт reference полей? что туда надо вводить? текст ссылки?

Аватар пользователя vgo vgo 12 декабря 2016 в 9:45

То есть, если я правильно понимаю, это значит, что на этапе подготовки данных к импорту эти поля заполнить невозможно, потому что ID будут определены только в момент импорта.
Жаль.
А какие есть средства, чтобы потом обработать массив из нескольких сот нодов, прописывая им reference поля по результатам поиска в массиве из, опять же, нескольких сот, если не тысяч, других нодов?

Аватар пользователя bumble bumble 12 декабря 2016 в 13:38

В любом случае нужно за что-то "зацепится".

Должно быть какое-либо уникальное поле, по которому можно определить ноду, на которую нужно сослаться. Например заголовок (если они не повторяются).

Таким образом, можно загрузить изначально список нод "B", а потом список нод "A" с указанием уникального поля из ноды типа "B".
Далее, производить доп обработку загружая ноду, получая ее ID и присваивая полю референса.

Аватар пользователя vgo vgo 12 декабря 2016 в 14:02

Такое поле есть, это заголовок. Но он уникален для ноды А, но не для нод B. Задача состоит в том, чтобы сразу показать ноду A и все ноды B с таким же заголовком.
Можно, видимо, загнать это поле в словарь, тогда поиск по термину как раз это и даст.
Ну а "нормальный" вариант есть? Когда нода А была открыта не обязательно через термин из словаря, а по какому-то иному варианту доступа.

Ну и второе. Допустим, я импортировал все ноды B, уникальные коды для них теперь известны. Теперь я хочу импортировать ноды A, чтобы при импорте прописались ссылки на все соответствующие ноды B. Какое для этого есть средство? Ну кроме, видимо, экспорта нод B, обработки их вне друпала и прописывания ссылок в файл для импорта?

Хотелось бы уметь делать такого рода операции в друпале, без необходимости использовать цепочку экспорт - обработка - импорт.

Аватар пользователя bumble bumble 12 декабря 2016 в 14:07

Описание комментарием ранее вполне "нормальное", не требует прокладок в виде терминов и позволяет применить его для случая с одинаковыми заголовками (нужно просто в уме поменять местами тип нод A и B Lol ).

Т.е. Вы загружаете список нод с одинаковыми заголовками (пусть будет тип X). Потом загружаете список нод с которых должны быть ссылки (пусть будет тип Y) и доп логикой, в которой получаете список нод типа X по заголовку текущей, и каждую добавляете в список референса (ну или каждой ноде типа X добавляете референс на ноду типа Y).

Аватар пользователя vgo vgo 12 декабря 2016 в 14:24

Во, в какое место и каким образом мне приделать эту дополнительную логику?

Импортирую я через feeds. Там, вроде, места для этой логики не нашел. Ну и поиски средств для импорта данных альтернатив feeds сходу не дали.

Если что, пишу на многих языках, включая PHP.

Аватар пользователя vgo vgo 9 декабря 2016 в 17:59

Не знаю я про Entityreference/Nodereference (( посмотрю сейчас, что за звери.
Пока просто одно и то же значение соответствующих полях связывает эти ноды.

Аватар пользователя vgo vgo 12 декабря 2016 в 11:39

Если это был ответ на мой вопрос, то я, извините, ничего не понял.
Я новичок, мне недостаточно посмотреть на картинку, чтобы проникнуться.