メッセージ
PR

別のページにある「タブ」ブロックをリンクから直接開く方法

Cocoonカスタマイズ集
この記事は約3分で読めます。

はじめに

以下をCocoonで実現します。

特定のページにあるリンクをクリックした際、別の固定ページへ移動するだけでなく、そのページ内の特定の「タブ」ブロックの指定タブを自動的に開いた状態で表示します。

この記事では、この方法について説明します。

完成イメージ

  • デンジ
  • レゼ
  • パワー

みんな偉い夢持ってていいなア!!じゃあ夢バトルしようぜ!夢バトル!!

デンジ君はさ、田舎のネズミと都会のネズミ、どっちがいい?

おうおう!ひれ伏せ人間!!ワシの名はパワー!バディとやらはウヌか!?

別ページからフッターのリンクをクリックしてください。

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定
    Gutenbergエディター

    以下の手順で設定します。

    1. 「タブ」ブロックの高度な設定で、HTMLアンカーに例えばtab1と入力します。
    2. リンク設定で、ジャンプ先のページURLの後ろに#tab1-1のように開きたいタブ番号をHTMLアンカーの後ろに追加します。

    https://example.com/page/#tab1-1
  • ラベル
    JavaScriptを追加

    以下のコードをjavascript.jsに追加します。

    jQuery(function ($) {
      /**
       * 指定されたハッシュ値に基づいて該当するタブを開きスクロール
       * @param {string} url - URLまたはハッシュ文字列
       */
      function openTabByHash(url) {
        if (!url) {
          return;
        }
    
        // URLからハッシュ部分を取得
        const hash = url.includes('#') ? '#' + url.split('#')[1] : url;
    
        // ハッシュからタブ番号を抽出
        const parts = hash.split('-');
        const $block = $(parts[0]);
        const tabIndex = parts[1] ? parseInt(parts[1], 10) - 1 : 0;
    
        // 該当タブの場合、タブを開いてスクロールする
        if ($block.length) {
          $block.find('.tab-label').eq(tabIndex).trigger('click');
          $(window).scrollTop($block.offset().top);
        }
      }
    
      // 別ページからハッシュ付きで移動した場合
      $(window).on('load', function () {
        openTabByHash(window.location.hash);
      });
    
      // ハッシュ付きリンクをクリックした場合
      $(document).on('click', 'a[href*="#tab"]', function () {
        openTabByHash($(this).attr('href'));
      });
    });

さいごに

今回紹介した方法を使えば、「タブ」ブロックでページ内リンクだけでなく、別ページからでも指定タブを自動で開くことができます。
リンクをクリックするとスクロールとタブ切り替えが同時に行われ、ユーザーにとってわかりやすく便利なナビゲーションを実現できます。

タイトルとURLをコピーしました