Дубли нод во views

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

Аватар пользователя SirOhlamon SirOhlamon 8 января 2013 в 15:25

Здравсвуйте!

Беспокоят дубли нод при выводе views.

Имеется блок, он выводит 10 нод. Из них всего 2 ноды уникальны. 6 дублей 1 ноды и 4 другой. Как это вылечить?

Причем для залогиненных и анонимов выводятся разные ноды и разные дубли. Сброс кеша ничего не меняет.

Комментарии

Аватар пользователя ilyin.eugene ilyin.eugene 8 января 2013 в 21:24

тогда зайдите в настройки модуля вьюс, включите отображение запросов а потом посмотрите свой запрос в соответствующем дисплее вьюхи. Если не найдете в чем проблема, скиньте - попробую помочь

Аватар пользователя SirOhlamon SirOhlamon 8 января 2013 в 21:39

SELECT DISTINCT node.title AS node_title, node.nid AS nid, votingapi_vote_node.value AS votingapi_vote_node_value, node.nid AS node_nid, 'node' AS field_data_field_tags_node_entity_type, 'node' AS field_data_body_node_entity_type
FROM
{node} node
LEFT JOIN {votingapi_vote} votingapi_vote_node ON node.nid = votingapi_vote_node.entity_id AND votingapi_vote_node.entity_type = 'node'
WHERE (( (node.status = '1') AND (node.type IN ('article')) ))
ORDER BY node_nid ASC
LIMIT 100 OFFSET 0

Это запрос.

Возникла идея... имеются ноды с одинаковым название. Может views просто отображает первую попавшуюся из одинаковых и пихает во все остальные?

Аватар пользователя ilyin.eugene ilyin.eugene 8 января 2013 в 21:46

это из за join, вы джойните таблицу votingapi_vote, а там могут быть дублированные записи для нод. Допустим когда за одну ноду голосовало 2 разных человека. Из за этого одни и те же ноды показываются несколько раз. Попробуйте решить это с помощью настроек агрегации. Если не получится то вам проще всего будет написать хендлер для группировки. Я писал об этом еще давно Группировка в хендлерах views

По сути вам просто нужно сгруппировать по nid - GROUP BY node.nid

Аватар пользователя SirOhlamon SirOhlamon 8 января 2013 в 22:04

С агрегацией не совсем понятно... Если ее просто включить то появляется ошибка:

Notice: Undefined index: format в функции _text_sanitize() (строка 319 в файле /var/www/sirohlamon/data/www/sexy-galleries.ru/modules/field/modules/text/text.module).

Думаю легче написать хендлер по Вашей статье.

Аватар пользователя ilyin.eugene ilyin.eugene 8 января 2013 в 22:05

я ею сам не пользовался. Просто там в описании написано, что если включите агрегацию, то некоторые поля могут перестать работать

Аватар пользователя SirOhlamon SirOhlamon 11 января 2013 в 18:30

Навозился я с этим хендлером. Ничего так и не вышло. Модуль никак не влияет на отображение.
Код был следующий:
function query() {
$this->query->add_groupby('node.nid');
}
пробовал и так:
function query() {
$this->query->add_groupby('nid');
}
Ноль изменений.

Помогла агрегация... Тело ноды надо обернуть в агрегацию "сущность поля" и ошибок не будет.