노드 액세스/보기 : domain_site 및 domain_id 영역의 기능은 무엇입니까?
-
19-09-2019 - |
문제
Drupal에서 만든 AA보기에서 중복 노드가 있습니다. 문제는 Node_Access 테이블의보기에서 조인이 수행되는 방식과 관련이있는 것으로 보입니다.
Devel을 사용하여 다음 쿼리가 표시됩니다.
SELECT node.nid AS nid,
node.language AS node_language,
node_data_field_weekend.field_weekend_value AS node_data_field_weekend_field_weekend_value,
node_data_field_weekend.field_weekend_value2 AS node_data_field_weekend_field_weekend_value2,
node.type AS node_type,
node.vid AS node_vid,
node_data_field_weekend.field_weekend_loc_nid AS node_data_field_weekend_field_weekend_loc_nid
FROM node node
LEFT JOIN content_type_wwme_weekends node_data_field_weekend ON node.vid = node_data_field_weekend.vid
INNER JOIN node_access na ON na.nid = node.nid
WHERE (na.grant_view >= 1 AND
(
(na.gid = 0 AND na.realm = 'all') OR
(na.gid = 0 AND na.realm = 'domain_site') OR
(na.gid = 0 AND na.realm = 'domain_id'))) AND
(
(
(node.type IN ('wwme_weekends')) AND
(node.status <> 0 OR
(node.uid = 0 AND 0 <> 0) OR 0 = 1)) AND
(DATE_FORMAT(STR_TO_DATE(node_data_field_weekend.field_weekend_value, '%Y-%m-%dT%T'), '%Y-%m-%d') > '2010-01-10') )
ORDER BY node_data_field_weekend_field_weekend_value ASC LIMIT 0, 5
Node_Access 테이블에 가입하면 노드에 여러 개의 node_access 레코드가 있고, 하나는 domain_site의 영역과 domain_id 영역을 가진 하나의 레코드가 있기 때문에 다른 레코드가 복제됩니다.
데이터 종류는 다음과 같습니다 (일부 열은 간결하게 끊어짐) :
nid gid realm grant_view grant_update grant_delete
73 0 domain_id 1 1 1
73 0 domain_site 1 0 0
988 0 domain_id 1 1 1
988 0 domain_site 1 0 0
90 0 domain_id 1 1 1
영역은 어떤 목적에 적합합니까? 이 레코드가 어떻게 채워지고, 가장 중요한 것은 어떻게이를 해결할 수 있습니까? SQL이 맞습니까?
해결책 2
대답은 내가 생각했던 것보다 훨씬 더 평범했습니다.
보기에서 "고정 노드"구성 옵션을 사용하면 Dupes가 나옵니다.
다른 팁
멀티 사이트 액세스가 켜져 있고 도메인 액세스 모듈을 사용하는 Drupal 사이트가있을 때 영역이 적합하다고 생각합니다.http://drupal.org/project/domain) 도메인 액세스 모듈이 필요하지 않으면 제거하면이 중 일부를 해결할 수 있습니다. 필요한 경우 Node Access (액세스 및/또는 도메인보기 모듈을 사용하여보기에 필터를 추가해야 할 가능성이 높습니다. 그것은 당신이 올바른 방향으로 향할 것입니다. 나는이 모듈과 직접 일한 적이 없습니다. 방금 모듈 코드와 프로젝트 페이지를 살펴 보았습니다. 행운을 빕니다!
제휴하지 않습니다 StackOverflow