Представления, критерии фильтрайии

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

Аватар пользователя Ekaterina23 Ekaterina23 19 июля 2014 в 19:43

делаю страницу представлений с профилями пользователей.
есть несколько раскрытых для пользователей фильтров (из полей profile2)
проблема в том, что если выбирать только один любой фильтр, а в остальных оставлять значение "все", то все прекрасно работает.
а если выбрать два и более фильтров, то результатов нет, просто пустая страница, хотя профили подходящие под значения фильтров есть.

в чем тут может быть проблема?

Комментарии

Аватар пользователя Ekaterina23 Ekaterina23 19 июля 2014 в 21:02

"drupby" wrote:
надо пробывать

не помогло.
я вот еще что заметила, пустой результат получается если значения фильтров относятся к полям из разных типов профиля, например первый фильтр из типа профиля "профиль" (поле "пол"), а второй из типа профиля "приоритеты" (поле "жанры фильмов").

Аватар пользователя Advin Advin 20 июля 2014 в 23:57

По идее все должно работать, но если есть проблемы можно:
1) посмотреть какой тип представления - profile или user и попробовать создать представление другого типа.
2) посмотреть какой запрос генерирует представление
3) если проблема не у админа - можно посмотреть настройки прав на просмотр профилей и т.п.

Аватар пользователя Ekaterina23 Ekaterina23 26 июля 2014 в 18:50

"Advin" wrote:
По идее все должно работать, но если есть проблемы можно:
1) посмотреть какой тип представления - profile или user и попробовать создать представление другого типа.
2) посмотреть какой запрос генерирует представление
3) если проблема не у админа - можно посмотреть настройки прав на просмотр профилей и т.п.

но не рабботает.
создавала новые представления, и profile, и user, но результат тотже.
вот запрос, который генерирует представление
/users?field_profile2_usertype_tid=27&field_profile2_looking_tid=1&field_profile2_material_tid=6&field_profile2_sex_tid=19
проблема и из под админа и из под обычных пользователей.

Аватар пользователя Ekaterina23 Ekaterina23 26 июля 2014 в 21:01

"drupby" wrote:
19 различных полов предусмотрено?

нет, только 2. 19 получается мужской, а 18 женский. по отдельности этот фильтр работает.
я не знаю почему такие цифры взялись, но если другие значения подставлять в урле, то ошибка "Сделан недопустимый выбор"

Аватар пользователя drupby drupby 26 июля 2014 в 21:45

запрос (SQL) покажите который формирует вьюха, перед предпросмотром должен выводиться, если нету, то на странице /admin/structure/views/settings чекбокс Show the SQL query

Аватар пользователя Ekaterina23 Ekaterina23 29 июля 2014 в 17:57

"drupby" wrote:
перед предпросмотром должен выводиться

SELECT profile.pid AS pid, DATE_FORMAT((DATE_ADD('19700101', INTERVAL profile.created SECOND) + INTERVAL 14400 SECOND), '%Y%m%d%H%i') AS profile_created_minute, 'users:page' AS view_name
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 мс

SELECT users.created AS users_created, users.uid AS uid
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

Аватар пользователя drupby drupby 29 июля 2014 в 18:04

"Ekaterina23" wrote:
один запрос для представления profile, другой для user

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

Аватар пользователя Ekaterina23 Ekaterina23 29 июля 2014 в 18:12

"drupby" wrote:
в обоих случаях пустой с двумя выбранными фильтрами

да пустой. один фильтр относится к профилю main, другой к профилю priorities.

Аватар пользователя drupby drupby 29 июля 2014 в 19:49

"Ekaterina23" wrote:
да пустой.

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

Аватар пользователя Ekaterina23 Ekaterina23 29 июля 2014 в 23:10

"drupby" wrote:
для profile - нет

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

Аватар пользователя drupby drupby 30 июля 2014 в 0:49

"dashiwa" wrote:
Можно конечно изменить запрос ,поправить фильтр.
Но это решение для программиста

покажи пример исправленного запроса

в данном случае идеальным решением будет field group , друпал вздохнет c успокоением

Аватар пользователя Ekaterina23 Ekaterina23 31 июля 2014 в 17:20

"drupby" wrote:
отказался от профайл2 и разделил редактирование профиля с помощью https://www.drupal.org/project/field_group[/quote]
я никак не могу понять как мне это поможет? ну создала я группу полей. но с профиль2 у меня оформленные страницы редактирования для разных профилей, плюс профиль майн с обязательными полями вынесен в регистрацию и прав на редактирования, пользователи не имеют.
я вот думаю, может полем вычислить продублировать 2 поля из профиля майн в профиль приоритеты, и поиск тогда только по одному профилю будет.
только никак не соображу как сделать выпадающий список на поля вычислить, чтобы там были все значения из исходных полей.

Аватар пользователя Ekaterina23 Ekaterina23 3 августа 2014 в 17:20

"drupby" wrote:
разделил редактирование профиля с помощью https://www.drupal.org/project/field_group[/quote]
есть способ запретить редактирование не отдельных полей, а целой вкладки?
для отдельных полей вроде нашла https://www.drupal.org/project/field_permissions
а надо именно убрать вкладку из редактирования для групп пользователей.

Аватар пользователя drupby drupby 3 августа 2014 в 22:25

"Ekaterina23" wrote:
есть способ запретить редактирование не отдельных полей, а целой вкладки?
для отдельных полей вроде нашла https://www.drupal.org/project/field_permissions
а надо именно убрать вкладку из редактирования для групп пользователей.

запретить с помощью field_permissions редактирование всех полей для нужных ролей, входящих в данную вкладку-группу
"Ekaterina23" wrote:
плюс профиль майн с обязательными полями вынесен в регистрацию и прав на редактирования, пользователи не имеют.

поля для добавления в форму регистрации - чекбокс "Display on user registration form." в форме редактирования поля

Аватар пользователя Ekaterina23 Ekaterina23 4 августа 2014 в 11:45

"drupby" wrote:
запретить с помощью field_permissions редактирование всех полей для нужных ролей, входящих в данную вкладку-группу

поля то я запретила, но вкладка все равно видна всем.

а field_permissions больше не развивается? с начала 12-го года, только бетта версия стабильна?

Аватар пользователя drupby drupby 10 ноября 2015 в 11:49

"Ekaterina23" wrote:
поля то я запретила, но вкладка все равно видна всем.

для админа

для зарегистрированного пользователя