Passen Sie die Seite "Zugriff verweigert" an

11

Ich habe viele grundlegende Seiten, auf denen der Benutzer angemeldet sein muss, um sie anzeigen zu können. Wie passe ich die Seite mit verweigertem Site-Zugriff an?

Youssef
quelle

Antworten:

7

Eine Seite mit benutzerdefiniertem Zugriff verweigert kann unter / admin / config / system / site-information definiert werden. Beispielsweise wird eine häufige 404-Fehlerseite vom Search404- Modul bereitgestellt .

Sie müssen lediglich Ihre eigene Seite definieren, möglicherweise mit einem Teaser von der angeforderten Seite, und den Benutzer darüber informieren, dass für den Zugriff auf den gesamten Inhalt eine Anmeldung erforderlich ist.

Dies erfordert wahrscheinlich, dass Sie PHP-Code in den Seitenkörper einfügen, oder Sie verwenden das Search404-Modul als Grundlage für die Entwicklung Ihres eigenen Moduls, um dies zu handhaben.

Edit: Je mehr ich darüber nachdenke, desto interessanter wird die Frage. Ich denke, es könnte ein Fall für eine 'View Teaser'-Erlaubnis zusätzlich zu' View public content 'gemacht werden. Mit anderen Worten, die Seite könnte für alle Benutzer verfügbar sein, aber der Teaser würde anstelle des vollständigen Inhalts angezeigt, und es könnte eine Meldung angezeigt werden, die angibt, dass der Benutzer angemeldet sein musste, um den vollständigen Inhalt anzuzeigen, ähnlich wie dies für vorgesehen ist Kommentare jetzt. Vielleicht eine Idee für ein beigesteuertes Modell (konnte keine auf DO finden).

Triskelion
quelle
7

Ich denke, Sie können Seite - 403.tpl.php und Seite - 404.tpl.php und Code in template.php über verwenden

function THEMENAME_preprocess_page(&$variables) {    
  $status = drupal_get_http_header("status");  
  if($status == '403 Forbidden') {
    $variables['theme_hook_suggestions'][] = 'page__403';
  }
  if($status == '404 Not Found') {
    $variables['theme_hook_suggestions'][] = 'page__404';
  }
}
Ruslan P.
quelle
Geprüft. Es klappt. Denken Sie jedoch daran, dass dieser Hook erst direkt nach dem Leeren des Caches ausgeführt wird.
Ignacio Segura Postigo