Wie kann ich ‚sichtbar machen‘ Menü-Links zu nicht autorisierte Inhalte in Drupal 6?

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

  •  10-07-2019
  •  | 
  •  

Frage

Das Drupal 6 Menü-Modul verbirgt Links zum Inhalt, dass der aktuelle Benutzer nicht über die Berechtigung für den Zugriff. Dies macht Sinn, aber es gibt Zeiten, in denen Sie Links möchten auf einer Seite ‚Sie diese Inhalte sind nicht berechtigt, zu sehen‘ gezeigt und gehen werden (beispielsweise für Marketingzwecke).

Gibt es eine einfache Möglichkeit, diese Verbindungen zu zeigen, zu bekommen? Ich verstehe, dass frühere Versionen von Drupal Sie tatsächlich benötigt, um ein Modul laden Sie die Links zu nicht autorisierten Seiten zu verbergen!

War es hilfreich?

Lösung 7

Ich habe ein Modul gefunden, die tatsächlich die Funktionalität zu bieten scheint, ich will:

http: // blog .davereid.net / content / restricted-Inhalt-noch-another-andere-drupal-node-access-Modul

Es ist wirklich einfach, es fügt nur ein Wähler in jedem Knoten Erstellungsseite, wo Sie wählen können, welche Rollen Zugriff auf sie haben wird. Alle, die nicht tun wird noch das Menü Link sehen, und dies wird zu einer benutzerdefinierten führen ‚Sie müssen sich registrieren, um dieses zu sehen‘ Seite. Ich habe es auf einer Test-Drupal-Website installiert und es scheint gut zu funktionieren; Scham Ich habe es nicht ein paar Wochen finden!

Andere Tipps

Es ist schon immer so (zumindest seit 4.7).

Sie können nicht unberechtigte Menüpunkte aus der Box sichtbar machen. Es könnte allerdings ein spezielles Modul sein ...

Was Sie tun können, ist die Menüseite Punkt auf eine Funktion zu lassen, die auf die Seite umleitet, dass Sie Ihr Menü verweisen soll. Das ist nicht ideal in vielerlei Hinsicht, aber da alle die Funktion zugreifen, die die Umleitung tut dies funktionieren soll. Sie canjust diesen Code in einem benutzerdefinierten Modul setzen Sie.

Es gibt keine Möglichkeit, dies in den Standard-Drupal zu tun, und ich bin nicht bekannt, dass beigetragen Module, die diese Funktionalität bereitstellt.

Zwei Lösungen kommen in den Sinn kommen, dies zu tun leicht .

  1. Mit minimaler Codierung ist der reale Menüpunkt zu verstecken und unsichtbar machen, dann eine Seite mit einigem PHP-Code machen, die auf den richtigen Menüpunkt leitet, wenn der Benutzer Zugriff hat, und einen anderen Text für die Menschen zeigt, wer nicht. Dann einfach einen Menüpunkt machen, die zu Ihrem Knoten verweist.

  2. Es geht um mehr Codierung, aber es wird wahrscheinlich robuster sein. So stellen Sie Ihre eigene Basismodul mit einem hook_menu , die das Gegenteil Zugangsprüfung zum realen hat Menüpunkt zusammen mit einem kleinen Menü Callback-Funktion mit dem Text, den Sie anzeigen möchten nicht-privilegierte Benutzer.

Wenn Sie dies für viele Menüpunkte einige flexiblere Lösung tun möchte, sollte festgestellt werden, richtig zu verwalten.

unter der Annahme, dass jeder Inhalt ist ein Knoten von Menü ohne Zugriffsregeln halten und dann mit

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

Sie können den Zugriff auf bestimmte Knoten verweigern ..

Hoffnung, die hilfreich ist.

Schließlich habe ich es eine etwas andere Art und Weise, durch eine Taxonomie für „offen“ oder „eingeschränkt“ Inhalte zu erstellen, und setze diese im Header meines Themas:

<?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 ist eine Seite, die ich erstellt, die alle üblichen Login / Anmeldeformulare enthält. Es scheint so weit für mich in Ordnung zu arbeiten!

Hinweis: Wenn die Menschen bewusst deaktivieren Umleitung in ihrem Browser werden sie jedoch nicht weitergeleitet, wenn ich in Opera mit Umleitung versucht, blätterten die Seite aus auf den Punkt geladen, wo die Umleitung versucht passieren, und dann nichts danach -. so wurde der Inhalt noch in diesem Fall beschränkt

Art der spät, aber das ist, wie ich dies ausgearbeitet:

/**
 * 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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top