メニュー全体を非表示にせずに、メインメニューの特定のリンクを匿名ユーザーから非表示にするにはどうすればよいですか?
リンクの可視性を直接構成することはそれほど多くありませんが、特定のコンテンツタイプの権限を構成します。特定のタイプのコンテンツへのリンクは、リンクが指すコンテンツの権限に応じて、表示または非表示になります。 。
[管理]の[権限]セクションに移動し、権限を制限するコンテンツタイプを見つけて、特定のコンテンツの権限を構成し、それらの権限(表示、作成、編集などのチェックボックス)を構成できます。適切な役割について。
特定のノード/コンテンツへのアクセスを構成する必要がある場合は、 コンテンツアクセス を参照することをお勧めします。
エルボーグリスを少し加えるだけで簡単にこれを行うことができます!
メニューがモジュールによって生成されるか、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;
}
これが幸せなコーディングに役立つことを願っています!
ロールごとのメニュー モジュールを使用して、ユーザーにメニューリンクの一部を表示することを制限できます。
これにより、ユーザーロールに基づいてメニュー項目へのアクセスを制限できます。したがって、特定のメニューリンクを特定のロールから非表示にして、他の人に表示することができます。
手動で行うことができます。多分、それは最良の形式ではありませんが、一時的に問題を解決するかもしれません。
JavaScriptファイルをメイン_.tpl.php
_に追加できます。このファイルでは、JavaScriptメソッドを使用して、コードの親要素と子要素(http://api.jquery.com/parent)を操作できます。したがって、まず_#idelement
_(メニューのすべてのリーフ間のメニューコードに配置される場合があります)などの方法で要素を取得し、次に.hide()
で要素を非表示にする必要があります。また、ユーザーがログインしている場合にのみ、JavaScriptファイルが_.tpl.php
_に追加したコードをコードに追加する必要があります。
_if(user_is_logged_in()){
drupal_add_js(yourjSFile);
}
_
これは一時的な解決策です。
メニューのコードまたは要素を変更した場合、このソリューションも変更する必要があります。
これにより、メニュー項目のみが非表示になり、コンテンツタイプは非表示になります。
http://drupal.org/project/content_access は、Drupal 7.22。
制限されたコンテンツを指すメインメニューリンクも非表示になります。