it-swarm-ko.tech

사용자 및 검색 엔진에서 직접 액세스해서는 안되는 노드를 숨기려면 어떻게합니까?

다른 곳에 표시 될 콘텐츠가 포함 된 노드가 있지만 직접 보지 않아야하는 경우가 있습니다. 즉, 아무도 node/1234로 이동해서는 안되지만 노드 1234의 내용은 다른 곳에 표시되어야합니다. 예를 들어, 뷰를 사용하여 탭 컨텐츠가있는 정보 페이지를 작성합니다. 따라서 "자기 소개", "회사 소개"및 "회사 소개"페이지가 있습니다. 이 모든 것이보기를 사용하여 탭이있는 단일 페이지에 표시됩니다. 따라서 사람들이 다른 페이지의 탭을 볼 수 없기 때문에 "About Us"노드로 직접 이동하는 것을 원하지 않습니다. 동시에 Google이 사람들 에게이 노드에 대한 직접 링크를 제공하지 않기를 원하며 액세스를 제한하여 사용자가보기 (예 : 탭)를 통해서만 액세스 할 수 있도록하고 싶습니다.

따라서 노드에 대한 액세스를 제한하고 Drupal 검색 결과에서 제거하고 Google이 선택하지 않도록해야합니다. 제안 사항이 있습니까?

49
Chaulky

노드 페이지를 재정의하는 패널을 만들 수 있고 사용자가 원하는 페이지를 볼 수 있도록 패널의 컨텍스트를 설정할 수 있기 때문에 Panels 모듈 의 좋은 사용 사례처럼 들립니다. 필요한 경우 패널 페이지에 대한 액세스 규칙뿐만 아니라이를 볼 수도 있습니다. 자세한 내용은 d.o.의이 게시물 을 참조하십시오.

27
coderintherye

토끼 구멍 모듈이이 기능을 제공합니다.

Rabbit Hole은 엔티티가 자신의 페이지에서 볼 때 발생하는 일을 제어하는 ​​기능을 추가하는 모듈입니다.

슬라이드 쇼에 표시되는 이미지 콘텐츠 유형과 같이 자체 페이지에 표시해서는 안되는 콘텐츠 유형이있을 수 있습니다. Rabbit Hole은 node/xxx를 통해 자체 페이지에서이 노드에 액세스 할 수 없도록합니다.

32
Pierre Buyle

한 가지 옵션은 노드를 게시하지 않지만 소비자 페이지 가 게시 상태를 무시하도록하는 것입니다. 따라서 귀하의 예에서 "정보"보기는 "About-xxx"노드의 게시 상태를 무시할 수 있습니다. 노드가 게시되지 않기 때문에 권한이없는 사용자는 액세스 할 수 없으며 검색 엔진에서 색인을 생성해서는 안됩니다.

또 다른 해결책은 hook_nodeapi('view') / hook_node_view() 구현을 사용하여 drupal_goto() 또는 drupal_access_denied() 인증되지 않은 사용자가 노드 페이지를 방문한 경우. hook_nodeapi() / hook_node_view() 은 노드 페이지를 볼 때뿐만 아니라 많은 경우에 사용됩니다.

hook_menu_alter() 는 노드 페이지의 액세스 콜백을 변경하여 hidden 노드.

가장 좋은 방법은 필터링 된 하드 노드 ID를 기준으로하지 않고 노드의 사용자 정의 필드 (CCK/Field API 또는 사용자 정의 테이블 사용) 또는 숨겨진 목록을 사용하는 것입니다. 노드 변수에 저장 .

12
Pierre Buyle

Drupal 7의 경우 토끼 구멍 은이 기능을 제공합니다.

Rabbit Hole은 엔터티를 자체 페이지에서 볼 때 발생하는 상황을 제어하는 ​​기능을 추가하는 모듈입니다.

이것은 엔티티가 자체 페이지에서 볼 때 발생하는 일을 제어하는 ​​여러 옵션을 제공함으로써 작동합니다. 당신은 능력이

  1. 액세스 거부 페이지를 제공하십시오.

  2. 페이지를 찾을 수없는 페이지를 제공하십시오.

  3. 경로 나 외부 URL로 페이지 리디렉션을 실행하십시오.

  4. 또는 단순히 엔터티를 표시합니다 (정규 동작).

어떻게 :

토끼 구멍 노드 하위 모듈을 활성화하면 Drupal 코드

6
niksmac

해결되었습니다. 먼저 Pierre Buyle 답변을 시도했지만 노드를 게시 취소하면 제대로 액세스 할 수 없으며 해당 노드가 쓸모 없게됩니다. 필자의 경우 부모 및 자식 노드가 있으며 크롤러가 색인을 생성하지 않고 숨기고 관리하는 자식 노드 만 있습니다. 내가 페이지 관리자로 내가 한 일은 http://www.wunderkraut.com/1 및 크롤러의 비 인덱스 노드는 노드 비 인덱스 모듈 에 의해 처리됩니다. Paret-Child 노드 관계가없는 경우에도 작동합니다. 자습서 링크 :

5
pinueve

Drupal 7에서 hook_node_access () 를 사용하는 것도 가능해야합니다. 이것은 D7의 일반 후크이며 모든 노드 유형에 대해 모든 모듈에서 구현할 수 있습니다. 그런 다음 사용자가 자신의 노드/니드에서 노드를 보려고하면 액세스를 거부 할 수 있습니다.

또한 hook_query_node_access_alter ()를 구현하고 검색 결과에서 노드를 숨기려면 검사를 추가해야합니다. 이것만으로도 충분할 수 있으며 hook_node_access ()가 필요하지 않습니다. 또한 쿼리를 변경할 수도 있기 때문에 D6에서도 작동하지만 쿼리 작성기 때문에 D7에서는 훨씬 쉽습니다.

3
Berdir

해당 노드를 '미공개'로 설정 한 다음보기에서 '노드 공개 : 아니오'필터를 추가하십시오.

참고로, 해당 '고스트'노드에 대한 사용자 정의 컨텐츠 유형을 작성하고 pathauto에 특정 URL을 제공하도록 지시하는 것이 좋습니다 (/dev/null/[title-raw] 사용). 노드가 공개되지 않은 경우에도 자체 URL 별칭이 있으므로 예제에서 먼저 'about about'고스트 노드를 만든 다음 'about about'보기 페이지를 만들면 두 번째 URL은 example.com/about-us-0 becose example.com/about-us가됩니다. 유령에서 가져온 것입니다 (단, 경로를 수동으로 설정할 수 있습니다)

2
Strae

규칙 모듈을 사용하여 수행 할 수 있습니다.
+ "콘텐츠를 본다"이벤트로 새로운 규칙을 만듭니다.
+ 예를 들어 다음과 같은 몇 가지 조건을 추가하십시오. 사용자에게는 역할이 있습니다. 필요한 경우 "및"또는 "또는"조건을 추가하십시오.
+ 다른 페이지로 리디렉션하거나 다른 작업을 수행하기위한 작업을 만듭니다. 이것은 내가 당신을 위해 내 보낸 샘플 코드입니다

{ "rules_limit_viewing_some_nodes" : {
  "LABEL" : "Limit viewing some nodes",
  "PLUGIN" : "reaction rule",
  "REQUIRES" : [ "rules", "path" ],
  "ON" : [ "node_view" ],
  "IF" : [
     { "user_has_role" : {
       "account" : [ "site:current-user" ],
       "roles" : { "value" : { "1" : "1" } }
      }
     },
     { "AND" : [] },
     { "path_has_alias" : { "source" : "node\/28" } }
   ],
   "DO" : [ { "redirect" : { "url" : "error" } } ]
 }
}
2
Stone Vo

모든 종류의 노드 액세스 시스템을 사용하고 뷰를 사용할 수 있습니다 3. 쿼리 설정에서 SQL 다시 쓰기를 비활성화 할 수 없으므로이보기에서 노드 액세스 시스템을 비활성화 할 수 있습니다.

2
Daniel Wehner

나는 당신이 원하는 것을 성취하는 가장 쉬운 방법은 페이지 관리자 (Ctools)를 사용하는 것이고, 실제로 사용하는 것이 간단하다고 생각합니다. 어디로 노드를 리디렉션할지 지정하십시오 (이 경우 한 노드에서 다른 노드로)

1
Nicolas_ii

Content Access 모듈은 요구 사항을 완벽하게 충족시킵니다.

이 모듈을 사용하면 역할 및 작성자별로 컨텐츠 유형에 대한 권한을 관리 할 수 ​​있습니다. 각 컨텐츠 유형에 대한 사용자 정의보기, 편집 및 삭제 권한을 지정할 수 있습니다. 선택적으로 컨텐츠 별 액세스 설정을 사용할 수 있으므로 각 컨텐츠 노드에 대한 액세스를 사용자 정의 할 수 있습니다.

시작하는 데 도움이되는 good documentation 도 있습니다.

1
AjitS

"포함 된 컨텐츠"노드에 액세스 할 수없는 상태로 유지하려면 webserver "location =/node/*"level에서/node/*를 차단하십시오. 기본적으로 모든/node에 대한 액세스를 거부합니다. 기본적으로/pages와 같은 경로 자동 경로를받은 노드에 액세스 할 수 있습니다.

하위 디렉토리의 기본 .htaccess 비밀번호는 외부 크롤러의 우발적 인 검색 색인 생성을 차단하는 적절한 방법입니다.

향후 설치 될 기고 모듈 또는 아직 완전히 이해하지 못하는 모듈을 통해 노드에 액세스 할 수 없다는 것을 절대 보장 할 수 없습니다. (검색 결과, 목록, 기본보기, 분류 범주 개요 ...)

이것이 바로 노드입니다.

"포함 된 콘텐츠"의 개인 정보가 중요합니까? 그렇다면 ...

  1. RL이있는 모든 것은 결국 Google에 의해 영향을받습니다.

    검색 엔진은 링크 스파이더에만 의존하지 않기 때문입니다. 또한 브라우저 피드백 등을 평가합니다. robot.txt 나 pathauto, globalredirect, rabbithole 모듈은 안심하고 잠을 자도록 도와줍니다. 노드에 액세스 할 수 있으면 인덱싱됩니다. 아마 당신의 브라우저/애드온에 의해.

  2. "포함 할 컨텐츠"가 실제로 노드 여야하는지 고려하십시오, 아무도 페이지로 액세스하지 않으면?

    "포함 된 컨텐츠"가 미니 패널/블록/스 니펫/bean/... 내부에 저장되면, 컨텐츠가 나열되거나 페이지 with 모르는 자동 URL, 아직. (택시 학 개요 페이지, 검색,보기 ...)

1
user18099

Restrict Node Page View 모듈은 원하는 것을 정확하게 수행합니다.

모듈 설명에서 :

게시해야하는 슬라이드 쇼 노드 유형을 사용한 적이 있지만 node/XXX 경로를 사용하여 자체적으로 노드에 액세스 할 수 없도록하려는 적이 있습니까? 이 모듈은 당신을위한 것입니다!

이 모듈을 사용하면 노드의 full보기 모드에 대한 액세스를 제한 할 수 있으므로 node/XXX에서 노드에 액세스 할 수 없습니다.

0
user72672