今回はViews Data Exportモジュールを使用してViewsの結果をCSVにエクスポートする方法を紹介したいと思います。
やりたいこと
任意のビューのヘッダーにCSVエクスポート用のリンクを設置して、リンクをクリックするとビューの内容をCSVにしたファイルがダウンロードされるようにしたい。
ダウンロードできるCSVのイメージ:
タイトル,コンテンツタイプ,投稿者,状態,更新
Test,記事,test,Published,"2021/01/28 - 10:00"
Test2,記事,test,Unpublished,"2021/02/26 - 22:10"
Views Data Exportモジュールのインストール
まずは通常通りモジュールをインストールします。
composer require drupal/views_data_export
drush en views_data_export
データエクスポートディスプレイの設定
次に、CSVを追加したいビューの設定画面を開き、画面左上からデータエクスポートのディスプレイを追加します。このディスプレイに対してCSVの設定を行っていきます。
主要なものとしては、以下の画像の設定項目から、ファイルの形式(CSV、TSV、XMLから選べます)、ファイルのリクエストに使用するパスやダウンロード時のファイル名、パスに対するアクセス制限、カラムの種類やラベルを設定できます。(今回は編集ボタンなど不要なフィールドは削除します。)
ちなみに、CSVへのリンクを貼りたいディスプレイのフィルターの条件で外部設置フィルターが設定されている場合、データエクスポートディスプレイ側でも同様の外部設置フィルターを設置しておくと、元のディスプレイで絞込んだ結果がそのままCSVにも反映されます。もしCSVの方は絞り込みたくないのであれば単純にデータエクスポートディスプレイ側の外部設置フィルターを削除すればOKです。
設定を保存したら、ブラウザにパスを直打ちするとCSVがダウンロードできるようになります。(この設定画面右上の「データエクスポートを表示」をクリックでもダウンロードできます。)
データエクスポートディスプレイへのリンクの設置
ここでCSVへのリンクを貼りたいディスプレイの設定画面を開き、ヘッダーの「追加」をクリックします。
Link to displayをチェックし、保存します。表示でさきほど作成したディスプレイを選択します。ラベルにはリンクテキストにしたい文字列を入力します。
ここでビューを保存します。
外部設置フィルターで絞込んだ状態でCSVをエクスポートしたら...
中身もしっかり絞り込まれてますね
Title,"Content type",Author,Status,Updated
Test2,記事,test,Unpublished,"2021/02/26 - 22:10"
というわけで、Viewsの結果をCSVにエクスポートする方法の紹介でした。