😸

DrupalのSortableviewsモジュールを使って、コンテンツを並び替えて、その結果をフィールドに保存する

2025/03/02に公開

概要

DrupalのSortableviewsモジュールを使って、コンテンツを並び替えて、その結果をフィールドに保存する方法について紹介します。

https://www.drupal.org/project/sortableviews

以下のように説明されています。

This one is similar to Draggableview module except it can save the position value ( After drag and drop the question ) into custom content type field.

これは DraggableViews モジュールと似ています が、ドラッグ&ドロップで並び替えた後の 位置情報をカスタムコンテンツタイプのフィールドに保存できる 点が異なります。

インストール

通常の方法でインストールできました。

コンテンツタイプの作成

ソート対象のコンテンツタイプを作成します。ここでは、teamというコンテンツタイプを対象にします。

そして並び順の重みを保存するためのweightフィールドを作成しました。

Viewsの作成

作成したViewsは以下です。

まず、フォーマットを「Sortable table」にします。この時、field to use for weightの項目で、重みを保存したいフィールドを選択します。

次に、フィールドで「Sortableviews: Drag and drop ...」を追加します。これにより、以下のようにドラッグ&ドロップのためのアイコンが表示されます。

さらに、並び替え基準として、「weight(昇順)」に設定しておきます。

最後、ヘッダーの部分で、「Save Sortableviews changes」を追加します。これにより、並び替え後に、「変更を保存」ボタンが表示されます。

APIからの利用

今回の設定では、ソート結果はfield_weightに保存されるため、例えば以下のようにAPIから利用できます。

/jsonapi/node/team?sort=field_weight

昇順に並び替えた結果を取得できます。これにより、decoupledな構成でもソート結果を利用することができます。

まとめ

Drupalにおけるコンテンツの並び替えとJSON:APIなどでの利用にあたり、参考になりましたら幸いです。

Discussion