Здравсвуйте!
Беспокоят дубли нод при выводе views.
Имеется блок, он выводит 10 нод. Из них всего 2 ноды уникальны. 6 дублей 1 ноды и 4 другой. Как это вылечить?
Причем для залогиненных и анонимов выводятся разные ноды и разные дубли. Сброс кеша ничего не меняет.
Комментарии
Вот в этих настройках включите уникальность http://i.imgur.com/akaqU.png
Если бы все было так просто...
Даже со включением этого "уникально" ничего не меняется...
тогда зайдите в настройки модуля вьюс, включите отображение запросов а потом посмотрите свой запрос в соответствующем дисплее вьюхи. Если не найдете в чем проблема, скиньте - попробую помочь
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 просто отображает первую попавшуюся из одинаковых и пихает во все остальные?
это из за join, вы джойните таблицу votingapi_vote, а там могут быть дублированные записи для нод. Допустим когда за одну ноду голосовало 2 разных человека. Из за этого одни и те же ноды показываются несколько раз. Попробуйте решить это с помощью настроек агрегации. Если не получится то вам проще всего будет написать хендлер для группировки. Я писал об этом еще давно Группировка в хендлерах views
По сути вам просто нужно сгруппировать по nid - GROUP BY node.nid
С агрегацией не совсем понятно... Если ее просто включить то появляется ошибка:
Notice: Undefined index: format в функции _text_sanitize() (строка 319 в файле /var/www/sirohlamon/data/www/sexy-galleries.ru/modules/field/modules/text/text.module).
Думаю легче написать хендлер по Вашей статье.
я ею сам не пользовался. Просто там в описании написано, что если включите агрегацию, то некоторые поля могут перестать работать
Спасибо на наводку!
Буду разбираться с Вашей статьей!
Навозился я с этим хендлером. Ничего так и не вышло. Модуль никак не влияет на отображение.
Код был следующий:
function query() {
$this->query->add_groupby('node.nid');
}
пробовал и так:
function query() {
$this->query->add_groupby('nid');
}
Ноль изменений.
Помогла агрегация... Тело ноды надо обернуть в агрегацию "сущность поля" и ошибок не будет.