Drupal 6의 무단 컨텐츠에 대한 '호환되지 않은'메뉴 링크는 어떻게하나요?

StackOverflow https://stackoverflow.com/questions/1218879

  •  10-07-2019
  •  | 
  •  

문제

Drupal 6 메뉴 모듈은 현재 사용자가 액세스 권한이없는 컨텐츠에 대한 링크를 숨 깁니다. 이것은 의미가 있지만 링크를 표시하고 '이 컨텐츠를 볼 수있는 권한이없는'페이지 (예 : 마케팅 목적)로 이동할 때가 있습니다.

이 링크를 보여줄 수있는 쉬운 방법이 있습니까? 이전 버전의 Drupal은 실제로 무단 페이지에 대한 링크를 숨기려면 모듈을 다운로드해야한다는 것을 이해합니다!

도움이 되었습니까?

해결책 7

실제로 원하는 기능을 제공하는 모듈을 찾았습니다.

http://blog.davereid.net/content/restricted-content-yet-different-drupferent-ccess-ccess-ccess-ccess-ccess-module

정말 간단합니다. 각 노드 생성 페이지 내에 선택기를 추가하여 액세스 할 수있는 역할을 선택할 수 있습니다. 메뉴 링크가 여전히 표시되지 않으면 사용자 정의 '이 페이지를 볼 수 있도록 등록해야합니다'페이지로 이어집니다. 테스트 드 루팔 사이트에 설치했는데 잘 작동하는 것 같습니다. 몇 주 전에 그것을 찾지 못했습니다!

다른 팁

그것은 항상 그런 식으로 (적어도 4.7 이후)였습니다.

무단 메뉴 항목을 상자 밖으로 무시할 수는 없습니다. 그래도 특수 모듈이있을 수 있습니다 ...

당신이 할 수있는 것은 메뉴 페이지가 메뉴를 가리키려는 페이지로 리디렉션하는 함수를 가리키는 것입니다. 이것은 여러 가지면에서 이상적이지 않지만 모든 것이 리디렉션을 수행하는 기능에 액세스 할 수 있기 때문에 작동해야합니다. 이 코드를 사용자 정의 모듈에 넣을 수 있습니다.

기본 Drupal 에서이 작업을 수행 할 방법이 없으며이 기능을 제공하는 기여한 모듈을 알지 못합니다.

이 작업을 수행하기 위해 두 가지 솔루션이 떠 오릅니다 용이하게.

  1. 최소한의 코딩을 사용하면 실제 메뉴 항목을 숨기고 보이지 않게 한 다음 사용자가 액세스 할 경우 적절한 메뉴 항목으로 리디렉션하는 PHP 코드가 포함 된 페이지를 작성하고 그렇지 않은 사람들을 위해 다른 텍스트를 표시하는 것입니다. 그런 다음 노드를 가리키는 메뉴 항목 만 만드십시오.

  2. 더 많은 코딩이 포함되지만 아마도 더 강력 할 것입니다. a로 나만의 기본 모듈을 만드십시오 hook_menu 여기에는 실제 메뉴 항목에 대한 반대 액세스 점검과 비 적극적인 사용자를 표시하려는 텍스트가 포함 된 작은 메뉴 콜백 기능이 있습니다.

많은 메뉴 항목에 대해이 작업을 수행하려면 더 유연한 솔루션을 제대로 관리하는 데있어 더 유연한 솔루션을 찾아야합니다.

모든 컨텐츠가 노드라고 가정하면 액세스 규칙없이 메뉴를 유지하고 사용할 수 있습니다.

hook_view($node, $teaser = FALSE, $page = FALSE)

특정 노드에 대한 액세스를 거부 할 수 있습니다 ..

도움이되기를 바랍니다.

결국 나는 "오픈"또는 "제한된"컨텐츠에 대한 분류법을 만들어서 약간 다른 방식으로 해냈고, 이것을 내 테마의 헤더에 넣었습니다.

<?php

global $user;

//if the user is not logged in, and the node is in taxonomy term "restricted"
//redirect them to the login page
foreach ($node->taxonomy as $tax){
  if ($tax->name == "Restricted" && !$user->uid){
    $query = 'destination=node/'.$node->nid;
    drupal_goto('please-login-continue',$query);  
  }
}
?>

/Please-Login은 모든 일반적인 로그인/가입 양식을 포함하는 페이지입니다. 지금까지 나를 위해 잘 작동하는 것 같습니다!

메모: 사람들이 브라우저에서 의도적으로 리디렉션을 비활성화하면 리디렉션되지 않지만 리디렉션으로 오페라에서 시도했을 때 리디렉션이 발생하려는 지점까지 페이지를 끄고 그 후에는 아무것도 없었습니다. 이 경우에도 여전히 제한됩니다.

늦었지만 이것이 내가 이것을 해결 한 방법입니다.

/**
 * Implementation of hook_menu()
 */
function mr_gm_menu() {

    $items = array();

    $items['x'] = array(
        'title' => 'X',        
        'page callback' => 'x_view',
        'access arguments' => array('access content'), 
        'type' => MENU_NORMAL_ITEM,
        'menu_name' => 'main-menu',
        'weight' => 10,
    );  

    return $items;
}

function x_view(){

  global $user;

  if ($user->uid):
    drupal_goto('node/add/X');
  else:
    drupal_goto('user');    
  endif;

  return;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top