섹션과 사용자 역할에 대한 RERQUEST_URI를 확인하는 모듈을 작성하여 drupal 사이트에서 개인 섹션을 만들었습니다. 내가 지금 실행하고있는 문제는 노드/뷰가 검색에 나타나지 않도록하는 방법입니다.검색에서 Drupal 노드 숨기기
개인 섹션에서 사용되는 콘텐츠 형식은 사이트의 다른 위치에서 사용됩니다.
Druapl 검색에서 콘텐츠를 무시하거나 색인을 생성하지 않거나 검색 결과에 표시하지 않는 가장 좋은 방법은 무엇입니까?
섹션과 사용자 역할에 대한 RERQUEST_URI를 확인하는 모듈을 작성하여 drupal 사이트에서 개인 섹션을 만들었습니다. 내가 지금 실행하고있는 문제는 노드/뷰가 검색에 나타나지 않도록하는 방법입니다.검색에서 Drupal 노드 숨기기
개인 섹션에서 사용되는 콘텐츠 형식은 사이트의 다른 위치에서 사용됩니다.
Druapl 검색에서 콘텐츠를 무시하거나 색인을 생성하지 않거나 검색 결과에 표시하지 않는 가장 좋은 방법은 무엇입니까?
lullabot 사이트에서이 내용을 설명하는 훌륭한 기사가 있습니다.
거기에있는 사람들이 다른 방법을 제안했기 때문에 의견을 읽을 수도 있습니다. 또한 자신의 코드에 몇 가지 후크를 구현하는 대신 contrib 모듈을 사용하여 제안했기 때문에 의견을 읽을 가치가 있습니다. D6에 대한 코드도 주석에 있습니다.
HTH!
비공개 섹션에서 사용되는 콘텐츠 유형이 다른 곳에서도 사용되는 경우 검색 결과에서 어떻게 필터링 할 것입니까? (아직 Mac에서 느긋한 기사를 보지 않았습니다.)
기본적으로 두 개의 노드 (개인 노드와 공개 노드)의 세부 정보를 보면 무엇이 다른 노드입니까?
참고 : '익명'사용자가 아닌 개인 영역에 액세스 할 수있는 사용자에게 노드를 표시하려고한다고 가정합니다.
무엇이 차별화되는지는 URL 경로이며 가능하면 메뉴에있는 경로입니다. 나는 거기에 나를 데려 갈 것 인 경우에만 '개인 태그'를 포함하는 분류법을 추가하는 것에 반대하지 않습니다. – easement
나는 사용자가 시스템에있는 위치를 기준으로 결과를 제한하려고합니다. 그들이 개인 영역에 있다면, 이들 노드는 포함되지만 외부에있는 노드는 포함되지 않습니다. 그것이 사실이라면 (언뜻 보면) lullabot 기사가 당신을 거기에 데려다 줄 수 있습니다. – DilbertDave
덩굴손 기사는 약간 구식이며 많은 무딘 접근법을 포함합니다. 또한 설명에 대답을 포함합니다 - 검색 제한 모듈은 DP6에서 작동하며 세분화 된 역할 기반 제어를 허용합니다. 다른 모든 방법으로 콘텐츠에 대한 색인이 생성되지 않으며 콘텐츠에 대한 액세스 수준이 다르거 나 모든 검색 쿼리에 동등하게 영향을 미칩니다. 또한 액세스 수준이 다른 경우에는 작동하지 않습니다.
드루팔 (Drupal) 7 사용자 정의 필드를 사용하여 검색 결과에서 노드를 숨길 수 있습니다. 필자는 이라는 컨텐트 유형으로 사용자 정의 필드를 만들고이 사용자 정의 필드의 도움을 받아 my_module_query_alter 기능을 작성할 수 있습니다.
코드
function my_module_query_alter(QueryAlterableInterface $query) {
$is_search = $is_node_search = FALSE;
$node_alias = FALSE;
foreach ($query->getTables() as $table) {
if ($table['table'] == 'search_index' || $table['table'] == 'tracker_user') {
$is_search = TRUE;
}
if ($table['table'] == 'node' || $table['table'] == 'tracker_user') {
$node_alias = $table['alias'];
$is_node_search = TRUE;
}
}
if ($is_search && $is_node_search) {
$nids = [];
// Run entity field query to get nodes that are 'suppressed from public'.
$efq = new EntityFieldQuery();
$efq->entityCondition('entity_type', 'node')
->fieldCondition('field_archive', 'value', 1, '=');
$result = $efq->execute();
if (isset($result['node'])) {
$nids = array_keys($result['node']);
}
if (count($nids) > 0) {
$query->condition(sprintf('%s.nid', $node_alias), $nids, 'NOT IN');
}
}
}
니스 - 나는 1 ;-) – DilbertDave
lullabot가 올바른 방향으로 절 지적 것을 북마크했습니다. 감사! – easement
듣고 좋은 ... 그때 행복한 코딩! ;) – mac