Discourseでフローティングバックボタンを追加する方法(モバイルユーザー向け)

モバイルブラウザのモバイルバックボタンナビゲーションに関するトピックがあり、解決策が見つからなかったのですが、見落としたのかもしれません :thinking:

私はコーダーではなく、Discourse についても危険なほど熟達していませんが、ChatGPT を使って、この画像にある、私の愛犬と一緒に写っている 青色 の動作するバックボタンを作成しました。

特定のページで非表示にしたいのですが、要素を非表示にする方法がまだわかりません。誰か知っている人がいれば、指示に追加します。

Discourse にフローティングバックボタンを追加する方法(モバイルユーザー向け)

このガイドは、Discourse フォーラムにモバイルデバイス用のフローティング「戻る」ボタンを追加するのに役立ちます。このボタンはモバイルユーザーにのみ表示され、組み込みの戻るボタンがないアプリやブラウザのナビゲーションを改善します。


ステップ 1: 新しいテーマコンポーネントを作成する

  1. 管理者としてログインする:
    • Discourse フォーラムにアクセスし、管理者アカウントでログインします。
  2. テーマカスタマイズにアクセスする:
    • Admin > Customize > Themes に移動します。
  3. テーマコンポーネントを作成する:
    • Components をクリックします。
    • Install > Create New をクリックします。
    • コンポーネントに「Mobile Back Button」という名前を付け、Create をクリックします。

ステップ 2: バックボタンのコードを追加する

  1. テーマコンポーネントを編集する:
    • 新しく作成したテーマコンポーネントをクリックします。
    • CSS/HTML セクションに移動します。
  2. バックボタン用の JavaScript を追加する:
    • Mobile タブに切り替えます。
    • <head> セクションをクリックします。
    • 次のコードを貼り付けます。

html

Copy code

<script type="text/discourse-plugin" version="0.8">
  function addMobileBackButton() {
    const isMobileView = api.container.lookup('site:main').mobileView;
    if (isMobileView) {
      const existingButton = document.querySelector('.floating-back-button');
      if (!existingButton) {
        const backButton = document.createElement('button');
        backButton.className = 'floating-back-button';
        backButton.innerHTML = '←'; // 左矢印の Unicode
        backButton.onclick = (event) => {
          event.preventDefault();
          window.history.back();
        };
        document.body.appendChild(backButton);
      }
    }
  }

  // 初期ページ読み込み時にボタンを追加する
  document.addEventListener('DOMContentLoaded', addMobileBackButton);

  // 後続のページ遷移時に再確認する
  api.onPageChange(addMobileBackButton);
</script>

ステップ 3: スタイリング用の CSS を追加する

  1. バックボタンのスタイルを追加する:
    • Mobile タブで、CSS セクションをクリックします。
    • 次の CSS を貼り付けます。

css

Copy code

.floating-back-button {
  position: fixed;
  bottom: 20px;
  left: 20px;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #0088cc; /* 色をカスタマイズする */
  color: #fff;
  border: none;
  font-size: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  z-index: 1000;
  cursor: pointer;
}

ステップ 4: テーマコンポーネントを適用する

  1. テーマに戻る:
    • Admin > Customize > Themes に移動します。
  2. アクティブなテーマを編集する:
    • アクティブなテーマをクリックします。
    • Theme Components の下にあるドロップダウンから「Mobile Back Button」コンポーネントを追加します。
    • Add をクリックし、次に Save をクリックします。

ステップ 5: 変更をテストする

  1. モバイルでフォーラムを開く:
    • モバイルブラウザを使用するか、開発者ツールを使用してモバイルビューをシミュレートします。
  2. バックボタンを確認する:
    • ボタンは画面の左下隅に表示されるはずです。
    • ボタンをクリックすると、ブラウザの履歴に戻るはずです。

注意事項:

  • モバイルのみ: コードと CSS は Mobile タブにあるため、ボタンはモバイルデバイスにのみ表示されます。
  • カスタマイズ:
    • フォーラムのデザインに合わせて、CSS でボタンの位置、サイズ、色を調整できます。
  • 機能:
    • バックボタンは window.history.back() を使用します。前のページがない場合、どこにも移動しません。

わかりませんが、スワイプで問題なく動作するので、戻るボタンは必要ありません。

「いいね!」 2

私のインストールに何か問題があるのかもしれませんが、一貫してスワイプすることができませんでした。まだDiscourseの操作に慣れていません。

Chrome では、左端からスワイプして戻ることができます。
ブラウザでは、スマートフォンの戻るボタンも機能します。あなたも機能しますか?
api.onPageChange() を使用してからページ URL を取得できると思います。
参照:

@Jagster スワイプジェスチャーの存在を理解できなかった原因について、いくつか発見したことがあります。

iPhoneではスワイプは問題なく機能します。Chromeを搭載したAndroidスマートフォンを2台持っています。1台は問題なくスワイプできますが、もう1台はスワイプがほとんど不可能です。Androidでは、PWAをインストールすると、スワイプがまったく機能しなくなるようです。スマートフォンはすべて1年から3年以内の比較的新しいものです。

他の人も同様の経験をしたことがあるか分かりません。

@NateDhaliwalありがとうございます!iPhone/Androidでの私の経験について投稿したばかりですが、デバイスによって異なり、PWAで動作していません。

その通りです。Androidでは、Hubアプリでフォーラムのリストに戻るようにスワイプすることもでき、これは非常にクールです。

すべてのiデバイスもそうですが、誰が数えているのでしょう😂

しかし、ジェスチャーが一部で失敗する理由については、説明がありません。しかし、私のユーザーは皆、文句を言わずに常にスワイプを使用しています🤷‍♂️