web-dev-qa-db-ja.com

匿名ユーザーからのリンクを隠す

メニュー全体を非表示にせずに、メインメニューの特定のリンクを匿名ユーザーから非表示にするにはどうすればよいですか?

7
Walker

リンクの可視性を直接構成することはそれほど多くありませんが、特定のコンテンツタイプの権限を構成します。特定のタイプのコンテンツへのリンクは、リンクが指すコンテンツの権限に応じて、表示または非表示になります。 。

[管理]の[権限]セクションに移動し、権限を制限するコンテンツタイプを見つけて、特定のコンテンツの権限を構成し、それらの権限(表示、作成、編集などのチェックボックス)を構成できます。適切な役割について。

特定のノード/コンテンツへのアクセスを構成する必要がある場合は、 コンテンツアクセス を参照することをお勧めします。

5
Lester Peabody

エルボーグリスを少し加えるだけで簡単にこれを行うことができます!

メニューがモジュールによって生成されるか、Drupal自体によって生成されるかによって異なります。これに応じて2つのフックがあります。 カスタムモジュール では、次のいずれかを使用します hook_men または hook_menu_alter

これらの2つのフックには、パラメーターaccess callbackここで、BOOLを返す関数を指定できます。関数がTRUEを返す場合、アクセスが許可され、メニューリンクが表示されます。 FALSEが返された場合、アクセスは許可されず、メニューリンクは表示されません。

//Small example
function <your_module>_menu_alter(&$items) {
  // Example - disallow access for anonymous to node 15 from custom module
  $items['node/15']['access callback'] = '_accessCheck';
}

次に、コールバックを定義します。

function _acccessCheck(){
  global $user;
  if ($user->uid) { // user is logged in
    return TRUE;
  } // Anonymous
    return FALSE;
}

これが幸せなコーディングに役立つことを願っています!

5
stefgosselin

ロールごとのメニュー モジュールを使用して、ユーザーにメニューリンクの一部を表示することを制限できます。
これにより、ユーザーロールに基づいてメニュー項目へのアクセスを制限できます。したがって、特定のメニューリンクを特定のロールから非表示にして、他の人に表示することができます。

3
AjitS

手動で行うことができます。多分、それは最良の形式ではありませんが、一時的に問題を解決するかもしれません。
JavaScriptファイルをメイン_.tpl.php_に追加できます。このファイルでは、JavaScriptメソッドを使用して、コードの親要素と子要素(http://api.jquery.com/parent)を操作できます。したがって、まず_#idelement_(メニューのすべてのリーフ間のメニューコードに配置される場合があります)などの方法で要素を取得し、次に.hide()で要素を非表示にする必要があります。また、ユーザーがログインしている場合にのみ、JavaScriptファイルが_.tpl.php_に追加したコードをコードに追加する必要があります。

_if(user_is_logged_in()){
   drupal_add_js(yourjSFile);
}    
_

これは一時的な解決策です。
メニューのコードまたは要素を変更した場合、このソリューションも変更する必要があります。
これにより、メニュー項目のみが非表示になり、コンテンツタイプは非表示になります。

2
Dieiba

http://drupal.org/project/content_access は、Drupal 7.22。

制限されたコンテンツを指すメインメニューリンクも非表示になります。

0
Ray Hulha