делаю страницу представлений с профилями пользователей.
есть несколько раскрытых для пользователей фильтров (из полей profile2)
проблема в том, что если выбирать только один любой фильтр, а в остальных оставлять значение "все", то все прекрасно работает.
а если выбрать два и более фильтров, то результатов нет, просто пустая страница, хотя профили подходящие под значения фильтров есть.
в чем тут может быть проблема?
Комментарии
надо пробывать https://www.drupal.org/project/views_dependent_filters
не помогло.
я вот еще что заметила, пустой результат получается если значения фильтров относятся к полям из разных типов профиля, например первый фильтр из типа профиля "профиль" (поле "пол"), а второй из типа профиля "приоритеты" (поле "жанры фильмов").
По идее все должно работать, но если есть проблемы можно:
1) посмотреть какой тип представления - profile или user и попробовать создать представление другого типа.
2) посмотреть какой запрос генерирует представление
3) если проблема не у админа - можно посмотреть настройки прав на просмотр профилей и т.п.
4) Посмотреть url, который генерирует фильтр. И сравнить значения.
но не рабботает.
создавала новые представления, и profile, и user, но результат тотже.
вот запрос, который генерирует представление
/users?field_profile2_usertype_tid=27&field_profile2_looking_tid=1&field_profile2_material_tid=6&field_profile2_sex_tid=19
проблема и из под админа и из под обычных пользователей.
кэширование включено во вьюхах?
19 различных полов предусмотрено?
отключено
нет, только 2. 19 получается мужской, а 18 женский. по отдельности этот фильтр работает.
я не знаю почему такие цифры взялись, но если другие значения подставлять в урле, то ошибка "Сделан недопустимый выбор"
запрос (SQL) покажите который формирует вьюха, перед предпросмотром должен выводиться, если нету, то на странице /admin/structure/views/settings чекбокс Show the SQL query
где его посмотреть?
FROM
{profile} profile
LEFT JOIN {field_data_field_profile2_usertype} field_data_field_profile2_usertype ON profile.pid = field_data_field_profile2_usertype.entity_id AND (field_data_field_profile2_usertype.entity_type = 'profile2' AND field_data_field_profile2_usertype.deleted = '0')
LEFT JOIN {taxonomy_term_data} taxonomy_term_data_field_data_field_profile2_usertype ON field_data_field_profile2_usertype.field_profile2_usertype_tid = taxonomy_term_data_field_data_field_profile2_usertype.tid
LEFT JOIN {field_data_field_profile2_material} field_data_field_profile2_material ON profile.pid = field_data_field_profile2_material.entity_id AND (field_data_field_profile2_material.entity_type = 'profile2' AND field_data_field_profile2_material.deleted = '0')
LEFT JOIN {taxonomy_term_data} taxonomy_term_data_field_data_field_profile2_material ON field_data_field_profile2_material.field_profile2_material_tid = taxonomy_term_data_field_data_field_profile2_material.tid
LEFT JOIN {field_data_field_profile2_sex} field_data_field_profile2_sex ON profile.pid = field_data_field_profile2_sex.entity_id AND (field_data_field_profile2_sex.entity_type = 'profile2' AND field_data_field_profile2_sex.deleted = '0')
LEFT JOIN {taxonomy_term_data} taxonomy_term_data_field_data_field_profile2_sex ON field_data_field_profile2_sex.field_profile2_sex_tid = taxonomy_term_data_field_data_field_profile2_sex.tid
LEFT JOIN {profile_type} profile_type_profile ON profile.type = profile_type_profile.type
WHERE (( (field_data_field_profile2_material.field_profile2_material_tid = '6') AND (field_data_field_profile2_sex.field_profile2_sex_tid = '19') ))
ORDER BY profile_created_minute DESC
LIMIT 10 OFFSET 0
Заголовок Пользователи
Адрес users
Время построения запроса 32.22 мс
Время выполнения запроса 3.01 мс
Время отрисовки представления 2.24 мс
FROM
{users} users
LEFT JOIN {profile} profile_users ON users.uid = profile_users.uid AND profile_users.type IN ( 'profile2_main', 'profile2_priorities' )
INNER JOIN {field_data_field_profile2_material} profile_users__field_data_field_profile2_material ON profile_users.pid = profile_users__field_data_field_profile2_material.entity_id AND (profile_users__field_data_field_profile2_material.entity_type = 'profile2' AND profile_users__field_data_field_profile2_material.deleted = '0')
INNER JOIN {field_data_field_profile2_sex} profile_users__field_data_field_profile2_sex ON profile_users.pid = profile_users__field_data_field_profile2_sex.entity_id AND (profile_users__field_data_field_profile2_sex.entity_type = 'profile2' AND profile_users__field_data_field_profile2_sex.deleted = '0')
WHERE (( (users.status <> '0') AND (profile_users__field_data_field_profile2_material.field_profile2_material_tid = '6') AND (profile_users__field_data_field_profile2_sex.field_profile2_sex_tid = '19') ))
ORDER BY users_created DESC
LIMIT 10 OFFSET 0
Заголовок user1
Адрес user1
один запрос для представления profile, другой для user
результат я так понимаю в обоих случаях пустой с двумя выбранными фильтрами?
да пустой. один фильтр относится к профилю main, другой к профилю priorities.
тут дело в том, что в данном случае вьюха строит запрос таким образом, что если выбирать по юзеру и объединить с таблицой профилей и потом сделать объединение с двумя таблицами полей, то даже без фильров такой запрос вернет пустой результат
а если выбирать по профилям, то естественно получится пустой результат, так как нету такого профиля в котором оба условия выполняются, так как эти поля не в одном и том же профиле
тогда как быть? и что
для нод разных типов помогает, для profile - нет
наверняка, кто то сталкивался с подобным, может есть другой способ сделать поиск по полям профилей?
я бы на вашем месте отказался от профайл2 и разделил редактирование профиля с помощью https://www.drupal.org/project/field_group
Можно конечно изменить запрос ,поправить фильтр.
Но это решение для программиста
покажи пример исправленного запроса
в данном случае идеальным решением будет field group , друпал вздохнет c успокоением
Не тестил , если там join-нов куча,то не вариант
запретить с помощью field_permissions редактирование всех полей для нужных ролей, входящих в данную вкладку-группу
поля для добавления в форму регистрации - чекбокс "Display on user registration form." в форме редактирования поля
поля то я запретила, но вкладка все равно видна всем.
а field_permissions больше не развивается? с начала 12-го года, только бетта версия стабильна?
для админа
для зарегистрированного пользователя