DrupalのSortableviewsモジュールを使って、コンテンツを並び替えて、その結果をフィールドに保存する
概要
Drupalの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