Вывод связанных полей через представление

Аватар пользователя leha373 leha373 27 декабря 2018 в 10:17

Здравствуйте!
никак не могу организовать вывод через views:

Есть тип материала:
- недвижимость
Есть поля:
- Город Ссылка на сущность Список выбора больше 1000 значений
-район москва Ссылка на термин Список выбора
-район питер Ссылка на термин Список выбора
.................
60 полей с районами
словари таксономиии город : район москва: район питер .........
есть зависимость полей город-район
Вопрос: Как вывести блок поля:
город и при выборе города появлялось поле (район этого города )

Очень долго ковырялся во Views, но нормального решения так и не нашел.
хотел сделать через фильтр глобальный:dependent filter но много значений и вылетает ошибка
SQLSTATE[HY000]: General error: 1116 Too many tables; MySQL can only use 61 tables in a join
Всем заранее Спасибо и с Новым годом!

0 Thanks

Лучший ответ

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 13:42

В последней версии, предложенной мной структуры данных многоуровневые словари не нужны,
иначе придется дублировать Уровень 1 (Город) в каждом из словарей (Районы, Метро и т.п.)
А так, словарь Город со списком городов только один, и прикрепляется к терминам Районы, Метро через поле "Ссылка на термин таксономии"

1.Словарь Город
- Москва
- Петербург
- Самара

2. Словарь Районы (к термину добавляется поле "город" одноименного словаря)
- Район 1, город: Москва
- Район 2, город: Москва
- Район 3, город: Москва
- Район 1, город: Петербург
- Район 2, город: Петербург
- Район 3, город: Петербург
- Район 1, город: Самара
- Район 2, город: Самара
- Район 3, город: Самара

3. Словарь Метро (к термину добавляется поле "город" одноименного словаря)
- Метро 1, город: Москва
- Метро 2, город: Москва
- Метро 3, город: Москва
- Метро 1, город: Петербург
- Метро 2, город: Петербург
- Метро 3, город: Петербург
- Метро 1, город: Самара
- Метро 2, город: Самара
- Метро 3, город: Самара

Комментарии

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 10:32

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

Аватар пользователя leha373 leha373 27 декабря 2018 в 10:37

я сделал отдельные словари имя район москва -термины
район питер -термины
раййон воронеж -термины

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 11:27

Чтобы дать точно правильный ответ, нужно лучше понимать:
как и что у Вас устроено и как должно работать.
Для этого необходимо подробнее расписать задачу.

А без подробностей, могу только предположить, что правильнее было бы для районов сделать один словарь таксономии, с двумя уровнями:
1.Уровень 1 - Города
2.Уровень 2 - Районы

Что-то типа такого:
Москва
- Район 1
- Район 2
- Район 3
- Район N
Петербург
- Район 1
- Район 2
- Район 3
- Район N

Аватар пользователя leha373 leha373 27 декабря 2018 в 12:02

a задача выводить поле при выборе определенного термина
например в поле город выбираю москва
выскакивает поле район москва и тд

Аватар пользователя leha373 leha373 27 декабря 2018 в 12:06

во вьюхе может есть другой способ использовать фильтры??
помимо глобальный:dependent filter
через контекстные фильтры,связи,агрегацию??
не могу сообразить)

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 12:17
1

У Вас для каждого города словарь: для районов и для метро

В связи с поступившей информацией структура данных скорее всего должна быть такая:

в вообще по правильному должно быть всего 3 словаря:
1.Город
2.Метро
3.Районы

У терминов словарей:
2.Метро
3.Районы

необходимо добавить поле "Ссылка на термин таксономии", словарь "Город"

В итоге у Вас получиться:
1.Словарь "Город" - просто список городов.
2.Словарь "Метро" - список метро связанных с определенными городами
2.Словарь "Район" - список районов связанных с определенными городами

В материале "Недвижимость"
добавляете для этих словарей поля:
1.Город
2.Метро
3.Район

Недавно (вчера-позавчера) тут проскакивал модуль для фильтрации списка выбора для поля типа entityreference.
при помощи него можно добиться такого функционала при заполнении полей материала недвижимость:
1.Выбираете город объекта недвижимости
2.При выборе района, список районов фильтруется по ранее выбранному городу, т.е. выводятся районы выбранного в поле Город города.
3.При выборе метро, список метро фильтруется по ранее выбранному городу, т.е. выводятся метро выбранного в поле Город города.

в вьюсе тоже все просто.
Поля:

  1. Добавляете поле Город
  2. Добавляете поле Район
  3. Добавляете поле Метро

Раскрытые фильтры:

  1. Добавляете фильтр по полю Город
  2. Добавляете фильтр по полю Район
  3. Добавляете фильтр по полю Метро

все.. никаких 60 полей, и список городов ничем не ограничен, хоть 61, хоть миллион-)

Аватар пользователя leha373 leha373 27 декабря 2018 в 12:32

я не пойму как должна выглядеть структура словарей район и метро
район
-воронеж
--центральный
--коминтерновский
метро
-москва
--киевская
--кутузовская
так чтоли
или
район
-все районы всех городов
метро
-все метро всех городов
(необходимо добавить поле "Ссылка на термин таксономии", словарь "Город")здесь можно поподробней
а то чего то страшно

Аватар пользователя leha373 leha373 27 декабря 2018 в 13:20

(необходимо добавить поле "Ссылка на термин таксономии", словарь "Город")
поле добавлять в таксономиии или в материалах?

Аватар пользователя leha373 leha373 27 декабря 2018 в 13:30

а в hierarchical_select можно сделать метки в выпадающих списках
подписывать поля
выбрал город выпало поле с районами и сделать метку что районы?

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 13:42

В последней версии, предложенной мной структуры данных многоуровневые словари не нужны,
иначе придется дублировать Уровень 1 (Город) в каждом из словарей (Районы, Метро и т.п.)
А так, словарь Город со списком городов только один, и прикрепляется к терминам Районы, Метро через поле "Ссылка на термин таксономии"

1.Словарь Город
- Москва
- Петербург
- Самара

2. Словарь Районы (к термину добавляется поле "город" одноименного словаря)
- Район 1, город: Москва
- Район 2, город: Москва
- Район 3, город: Москва
- Район 1, город: Петербург
- Район 2, город: Петербург
- Район 3, город: Петербург
- Район 1, город: Самара
- Район 2, город: Самара
- Район 3, город: Самара

3. Словарь Метро (к термину добавляется поле "город" одноименного словаря)
- Метро 1, город: Москва
- Метро 2, город: Москва
- Метро 3, город: Москва
- Метро 1, город: Петербург
- Метро 2, город: Петербург
- Метро 3, город: Петербург
- Метро 1, город: Самара
- Метро 2, город: Самара
- Метро 3, город: Самара

Аватар пользователя leha373 leha373 27 декабря 2018 в 13:46

. Словарь Районы (к термину добавляется поле "город" одноименного словаря)
- Район 1, город: Москва
- Район 2, город: Москва
- Район 3, город: Москва
- Район 1, город: Петербург
- Район 2, город: Петербург
- Район 3, город: Петербург
- Район 1, город: Самара
- Район 2, город: Самара
- Район 3, город: Самара
а как такое организовать?
можно пошагово
если не трудно

Аватар пользователя Orion76 Orion76 27 декабря 2018 в 15:55

Создаете 3 словаря;
1.Города
2.Районы
3.Метро

Заходите в настройки словаря Районы
на вкладку "Управление полями"
в поле "Добавить новое поле" пишите наименование поля (например city)
в столбце "Тип поля" выбираете из списка "Ссылка на термин"
в столбце "Виджет" выбираете "Список"
Жмете "Сохранить"
на следующем шаге выбираете Словарь: Город
Жмете "Сохранить"

Заходите в настройки словаря Метро
на вкладку "Управление полями"
т.к. поле "city" уже создано при добавлении его в словарь Районы, просто выбираете его из списка "- Выберите существующее поле -"
в столбце "Виджет" выбираете "Список"
Жмете "Сохранить"

Аватар пользователя leha373 leha373 27 декабря 2018 в 16:25

я только одного не пойму в словарь районы добавлять районы всех городов как термины?

Аватар пользователя sas@drupal.org sas@drupal.org 28 декабря 2018 в 8:14

> город и при выборе города появлялось поле (район этого города )
Словарь "местоположение"
Термины:
Название города
- название района
...
Для селектов можно использовать shs
P.S.
Проектирование структуры ER связей на первоначальном этапе позволяет сократить время и издержки далее.
Для этого используется теория и практика нормализации https://ru.wikipedia.org/wiki/ER-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C

Аватар пользователя leha373 leha373 29 декабря 2018 в 17:00
Orion76 wrote:

1.Словарь Город

- Москва

- Петербург

- Самара
2. Словарь Районы (к термину добавляется поле "город" одноименного словаря)

- Район 1, город: Москва

- Район 2, город: Москва

- Район 3, город: Москва

- Район 1, город: Петербург

- Район 2, город: Петербург

- Район 3, город: Петербург

- Район 1, город: Самара

- Район 2, город: Самара

- Район 3, город: Самара
3. Словарь Метро (к термину добавляется поле "город" одноименного словаря)

- Метро 1, город: Москва

- Метро 2, город: Москва

- Метро 3, город: Москва

- Метро 1, город: Петербург

- Метро 2, город: Петербург

- Метро 3, город: Петербург

- Метро 1, город: Самара

- Метро 2, город: Самара

- Метро 3, город: Самара

не могу организовать такую структуру
каким модулем пользоваться?
подскажите кто знает?

Аватар пользователя sas@drupal.org sas@drupal.org 29 декабря 2018 в 18:48

Давно связям с в словарях для вывода через views предпочитаю https://www.drupal.org/project/facetapi они динамически строятся, что гибче и удобней для юзабилити, а остальное было написано типа город - район - деревянный слорварь