「メインナビゲーション」メニューにログインリンクを追加するにはどうすればよいですか?
ユーザーがリンクをクリックすると、/ user / loginページに移動します。ログインすると、リンクが「ログイン」ではなく「ログアウト」に変わるはずです。
そのようなリンクを追加する方法はありますか?
「メインナビゲーション」メニューにログインリンクを追加するにはどうすればよいですか?
ユーザーがリンクをクリックすると、/ user / loginページに移動します。ログインすると、リンクが「ログイン」ではなく「ログアウト」に変わるはずです。
そのようなリンクを追加する方法はありますか?
回答:
他のメニューでシステムの「ログアウト」リンクを移動するために、Bootstrapテーマやプログラミングスキルに依存する必要はありません。Drupalを使用すると、簡単に作成できます。
さらに私たちは、「2つのカスタム作成することができますここで私にログインをしてください」と「そこを私に出て行けとのリンク」/ユーザー/ログインおよび/ユーザー/ログアウト・パス比較的。システムの「ログアウト」リンクとは異なり、カスタム属性を使用して必要な数のログイン/ログアウトリンクを作成できるため、これはより良い方法です。ユーザーがログインすると、「ログアウト」リンクのみが表示され、その逆も同様です。唯一の注意点は、リンクのテスト時にログインしているため、おそらく両方のリンクが一緒に表示されることです。また、管理者として「任意のページへのリンク」権限があるため、これは正常です。この権限を無効にして、再試行してください。
簡単に言えば、2つの異なるメニューバージョンを作成し、1つはログイン、もう1つはログアウトし、各バージョンに異なる可視性の役割を与えます。
1)[ 編集]メニュー、および[ログアウトリンク]を追加します。
2)今しなければならないことは、メインメニューのリンクブロックを設定する ことだけです
次に、[役割]で、チェックマークを付けます☑認証済みユーザーとalso管理者
3)次に/admin/structure/menu
、「ログイン」リンクと必要な他のすべてのメニューリンクを含む別のメニュー()を作成します。
4)次に/admin/structure/block
、プライマリメニューのブロック()に移動します(Bartikを使用している場合、カスタムテーマを使用している場合は別の名前になる可能性があります)[追加]をクリックし、作成したメニューを追加して構成します。今回はロール、チェックマークのみ☑匿名
:)
これを行うには、より良い方法があります。やりたいことは、独自のプラグインを作成し、MenuLinkDefaultクラスを拡張することです。調べるのに最適な場所は、LoginLogoutMenuLink実装を提供するDrupal / Userモジュールです。
たとえばテキストやロジックを変更したい場合は、独自のプラグインを定義できます。または、既存のプラグインをポイントするだけで時間を節約し、既存の実装を単純に配置できます。ここにいくつかのサンプルコードがあります:
シンプルなバージョン:
作成する my_module/my_module.links.menu.yml
my_module.logout:
weight: 10
menu_name: my-custom-menu
class: Drupal\user\Plugin\Menu\LoginLogoutMenuLink
高度なバージョン:
my_module/src/Plugin/Menu/
フォルダーにコピーしますnamespace Drupal\my_module\Plugin\Menu;
class LoginLogoutMenuLink extends MenuLinkDefault
しますclass MyLoginLogoutMenuLink extends MenuLinkDefault
my_module.links.menu.yml
上記のとおりにを作成しますが、クラスに名前を付けたとおりにクラスに名前を付け、モジュールを指すようにします。以下の例を参照してください。あなたmy_module/src/Plugin/Menu/MyLoginLogoutMenuLink.php
は次のようになります:
namespace Drupal\my_module\Plugin\Menu;
use Drupal\Core\Menu\MenuLinkDefault;
use Drupal\Core\Menu\StaticMenuLinkOverridesInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* A menu link that shows "Log in" or "Log out" as appropriate.
*/
class MyLoginLogoutMenuLink extends MenuLinkDefault {
...
あなたmy_module/my_module.links.menu.yml
は次のようになります:
my_module.logout:
weight: 10
menu_name: my-custom-menu
class: Drupal\my_module\Plugin\Menu\MyLoginLogoutMenuLink
これが誰かの役に立つことを願っています。
Bootstrap 3 Drupal 8テーマでは、デフォルトでこの機能が提供されているため、これを行うことができます。私のdrupal 8トライアルサイトの画像を投稿しています。1つはログインページ、もう1つはログアウトページです。
そんなもの探してるの?
以下の手順に従ってください。
1.構造>ブロックに移動します。ナビゲーションセクションで次の設定を確認してください。
2.次の画像に示すように、構造>メニュー>ユーザーアカウントメニューに移動して、マイアカウントを無効にします。
したがって、最初の画像のペアで投稿したように、メインナビゲーションメニューにはログインとログアウトのみが表示されます。
Bootstrapサブテーマを使用する場合は、このコードを変更してニーズに合わせることができます。
<?php global $user; if ($user->uid): ?>
<a href="/user/logout" type="button" class="navbar-brand" role="button">Logout</a>
<?php endif; ?>
<?php global $user; if (!$user->uid): ?>
<a href="/user" type="button" class="navbar-brand" role="button">Login</a>
<?php endif; ?>
このコードをブロック内のsubtheme / templates /のpage.tpl.phpに配置します。
< div class="navbar-header"> ... < /div>
私はそれを90行の後に置きました。その場合、折りたたむ必要がある場合は、モバイルデバイスで折りたたまれません。
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
プログラム的には、独自のモジュールの.links.menu.yml
ファイルを使用してこれを実現できます。以下は、これらのリンクを「メイン」メニューに配置します。
mymodule.sign_in:
title: 'Sign in'
parent: system.menu.main
description: 'Sign in'
route_name: user.login
weight: 100
menu_name: main
mymodule.sign_out:
title: 'Sign out'
parent: system.menu.main
description: 'Sign out'
route_name: user.logout
weight: 101
menu_name: main
これらのそれぞれが呼び出している「route_name」はすでにログイン/ログアウト要件を指定しているため(https://api.drupal.org/api/drupal/core%21modules%21user%21user.routing.yml/8.4.xを参照))、リンクはログイン状態に応じて表示されます。