web-dev-qa-db-ja.com

メインナビゲーションメニューにログイン/ログアウトリンクを追加する方法

「メインナビゲーション」メニューにログインリンクを追加するにはどうすればよいですか?

ユーザーがリンクをクリックすると、/ user/loginページに移動します。ログインすると、リンクが「ログイン」ではなく「ログアウト」に変わるはずです。

そのようなリンクを追加する方法はありますか?

8
GTS Joe

他のメニューのシステム「ログアウト」リンクを移動するために、Bootstrapテーマやプログラミングスキルに依存する必要はありません。 Drupalを使用すると、簡単に作成できます。

edit Log out link

move on another menu

さらに、2つのカスタム "Log me me here here"および "Get me out from there"リンク(/ user/loginおよび/ user/logoutパスは比較的です。システムの「ログアウト」リンクとは異なり、カスタム属性を使用して必要な数のログイン/ログアウトリンクを作成できるため、これはより良い方法です。ユーザーがログインすると、「Log out」リンクのみが表示され、逆も同様です。唯一の注意点は、リンクのテスト時にログインしているため、おそらく両方のリンクが一緒に表示されることです。また、管理者として「任意のページへのリンク」権限があるため、これは正常です。この権限を無効にして、もう一度お試しください。

10
drugan

簡単に言うと、ログインとログアウトの2つの異なるメニューバージョンを作成し、各バージョンに異なる可視性の役割を与えます。

1)編集メニュー、およびログアウトリンクを追加します。

2)今しなければならないことは、configureメインメニューのリンクブロック enter image description here

次に、ロールでチェックマークを付け、☑認証されたユーザーと☑管理者にチェックマークを付けます

enter image description here

3)次に、別のメニュー(/admin/structure/menu)「ログイン」リンクとその他の必要なすべてのメニューリンクがあります。

4)次に、ブロック(/admin/structure/block)inPrimary Menu(Bartikを使用している場合、カスタムテーマを使用している場合は別の名前になる可能性があります)追加をクリックし、作成したメニューを追加して構成します。今回はロール、チェックマークのみonly匿名

4
No Sssweat

これを行うには、より良い方法があります。やりたいことは、独自のプラグインを作成し、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/フォルダにコピーします
  • LoginLogoutMenuLinkからMyLoginLogoutMenuLinkに名前を変更します。
  • 名前空間を更新して、場所を反映させます。 namespace Drupal\my_module\Plugin\Menu;
  • ファイルでclass LoginLogoutMenuLink extends MenuLinkDefaultclass 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

これが誰かの役に立つことを願っています。

3

これは Bootstrap Drupal 8テーマで行うことができます。そのテーマはデフォルトでこの機能を提供するためです。私は画像を投稿していますdrupal 8つの試用サイト。1つはログインページ、もう1つはログアウトページです。

enter image description here

enter image description here

そんなもの探してるの?

以下の手順に従ってください。

1。構造>ブロックに移動します。ナビゲーションセクションで次の設定を確認してください。

enter image description here

2。次の画像に示すように、構造>メニュー>ユーザーアカウントメニューに移動し、マイアカウントを無効にします。

enter image description here

したがって、メインナビゲーションメニューには、ログインとログアウトのみが表示されているはずです。

2
CodeNext

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">
1
makbuk

プログラム的には、独自のモジュールの.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 )、リンクはログイン状態に応じて表示されます。

1
markfullmer