Menu Link Weight

メニューリンクの標準的な数値ウェイトドロップダウンを直感的なtabledragウィジェットに置き換え、コンテンツ編集者がメニュー項目を視覚的に並べ替えられるようにします。

menu_link_weight
3,100 sites
23
drupal.org

概要

Menu Link Weightモジュールは、Drupalのメニューリンク用の標準的な数値ウェイトドロップダウンウィジェットに代わる、ユーザーフレンドリーな代替手段を提供します。ユーザーが-50から50までのウェイト値を理解して手動で設定する必要がなく、このモジュールは兄弟メニューリンクを現在の順序で表示するtabledragインターフェースを提供します。

ノードまたはメニューリンクを編集する際、ユーザーは単純にドラッグアンドドロップでメニュー項目を兄弟間で並べ替えることができます。親メニューが変更されると、モジュールはAJAXを介して動的に更新され、選択した親の下にあるすべての兄弟リンクを表示します。JavaScriptが無効な環境向けに、グレースフルフォールバックボタンが提供されます。

フォーム送信時、モジュールは影響を受けるすべての兄弟リンクのウェイトを-50から順次再計算し、適切な順序を保証します。このアプローチにより、基盤となるウェイトシステムを理解する必要がなくなり、コンテンツ編集者にとってメニュー整理が直感的になります。

Features

  • メニューリンクの順序付けで数値ウェイトドロップダウンを視覚的なtabledragインターフェースに置き換え
  • 親メニュー選択変更時のAJAX駆動の動的更新
  • ノード編集フォームおよびメニューリンク編集フォームから直接、兄弟メニューリンクをドラッグアンドドロップで並べ替え
  • JavaScript無効環境向けのフォールバックボタンによるグレースフルデグラデーション
  • フォーム送信時に-50から50までのウェイトを自動再計算
  • Client-side Hierarchical Select (CSHS)モジュールとのオプション統合による親選択の強化
  • Menu Admin Per Menuモジュールとの互換性によるメニューごとの権限制御
  • ユーザー間の変更の上書きを防ぐ同時編集検出機能
  • tabledragウィジェットからメニュー管理ページへの直接リンクによるクイックアクセス
  • ユーザーがメニューリンクタイトルを入力すると、tabledragリスト内でタイトルがリアルタイム同期

Use Cases

コンテンツ編集者によるメニュー項目の並べ替え

コンテンツ編集者が新しいページを作成し、既存の2つのメニュー項目の間に表示したいとします。ウェイト値を推測する代わりに、メニューリンクチェックボックスを有効にし、兄弟項目の視覚的なリストを確認して、新しいページを希望の位置にドラッグします。モジュールがウェイト計算を自動的に処理します。

ノード編集フォームからのメニュー構造の再編成

ノードを編集中に、サイト管理者がメニューの再編成が必要なことに気づきます。tabledragウィジェットを使用して、現在のノードのメニューリンクだけでなく、すべての兄弟リンクも並べ替えることができ、ノードを保存するとすべての変更が一度に適用されます。

数値ウェイト知識なしでのメニュー管理

Drupalの-50から50までのウェイトシステムに詳しくないコンテンツチームでも、ドラッグアンドドロップを使用して直感的にメニューの順序を管理でき、トレーニング時間を短縮し、順序付けミスを防ぎます。

CSHSを使用した階層メニュー管理

深いメニュー階層を持つサイトでは、管理者がCSHS統合を有効にして、カスケードドロップダウンインターフェースを取得でき、正しい親メニュー項目へのナビゲートと選択が容易になります。

Tips

  • モジュールは保存時にすべての兄弟ウェイトを-50から再計算するため、保存後にウェイト値が変わっても驚かないでください
  • ウィジェットの説明内のメニュー名リンクをクリックすると、完全なメニュー管理ページに直接ジャンプできます
  • ウィジェットは読みやすさのためにタイトルを30文字で切り詰めて表示します。完全なタイトルを見るにはリンクにカーソルを合わせてください
  • 新しいメニューリンクはデフォルトで兄弟リストの先頭に配置されます。保存前に希望の位置にドラッグしてください

Technical Details

Admin Pages 1
Menu Link Weightモジュールの設定 /admin/config/user-interface/menu-link-weight

Menu Link Weightモジュールで使用する親メニューリンクセレクターウィジェットを設定します。デフォルトではDrupalの標準選択ドロップダウンが使用されますが、オプションでClient-side Hierarchical Select (CSHS)に切り替えて、より直感的な階層メニュー選択体験を得ることができます。

Hooks 4
hook_form_node_form_alter

ノードフォームを変更し、メニューリンクの順序付け用のウェイトドロップダウンをtabledragウィジェットに置き換えます。tabledragテーブル、同時編集検出用の非表示db_weightsフィールド、親変更時のAJAXコールバックを追加します。

hook_form_menu_form_alter

メニュー概要フォームを変更し、各メニューリンク行にアンカータグ(HTML ID)を追加して、ノードフォームから特定のメニュー項目への直接リンクを可能にします。

hook_form_menu_link_content_form_alter

メニューリンクコンテンツエンティティフォームを変更し、兄弟リンクの並べ替え用tabledragウィジェットを追加します。

hook_form_menu_link_edit_alter

デフォルトのメニューリンク編集フォーム(システム提供リンク用)を変更し、tabledragウィジェットを追加します。

Troubleshooting 4
ノードフォームにtabledragウィジェットが表示されない

ユーザーが「メニューの管理」権限を持っているか、Menu Admin Per Menuを使用している場合は関連するメニューへのアクセスが許可されていることを確認してください。

兄弟メニューのウェイト変更が上書きされる

モジュールは同時編集を検出します。別のユーザーによってウェイトが変更されたというエラーが表示された場合は、変更を加える前にフォームをリロードして最新のウェイトを取得してください。

CSHSオプションを選択するとエラーが表示される

このオプションを使用する前に、Client-side Hierarchical Selectモジュールをインストールして有効にする必要があります。Composerでインストール:composer require drupal/cshs

JavaScriptが機能せず、「Change parent」ボタンが表示される

これはグレースフルデグラデーションのフォールバックです。ブラウザコンソールでJavaScriptエラーを確認してください。JavaScriptが有効で機能している場合、tabledragは動作するはずです。