📢

SharePoint Online のモダン サイトでニュースの一覧を表示する

に公開

SharePoint Online のモダン サイトには標準のニュース Web パーツがありますが、指定した件数しか表示できません。そのため、新しいニュースが追加されると古いニュースが表示されなくなります。すべて表示 をクリックすればすべてのニュースを確認できますが、ひと手間かかることや、タイトルを非表示にしている場合は表示されないため、やや不便です。可能であれば Web パーツとして一覧表示したいと考えました。

結論として、件数の制限なく表示するにはドキュメント ライブラリの Web パーツを使う方法が適しています。[1] さっそくドキュメント ライブラリの Web パーツを追加してサイト ページを表示します。

ファイル名だけではどのニュースかわかりにくいです。新しく すべてのニュース という名前でビューを作成し、名前 列の代わりに タイトル 列を表示するようにします。

ほぼ目的通りですが、少しだけ課題があります。サイト ページには通常のページとニュースのページが混在しているため、ニュースだけを表示したいです。ニュースかどうかは 昇格された状態 (PromotedState) 列で判別できますが、既定では非表示になっており、UI からはフィルター設定ができません。そのため、PowerShell で操作する必要があります。方法は 2 通りあります。

  • 一時的に 昇格された状態 列を表示する
  • ビューの CAML を直接修正する

今回は PnP PowerShell を使用し、一度で設定できる後者の方法を紹介します。スクリプトは以下の通りです。

$SITE_URL = '{{site-url}}'
$LIST_NAME = '{{list-name}}'
$VIEW_NAME = '{{view-name}}'
$CAML = @'
<Where>
    <Eq>
        <FieldRef Name="PromotedState" />
        <Value Type="Number">2</Value>
    </Eq>
</Where>
'@
Connect-PnPOnline -Url $SITE_URL -Credentials (Get-Credential)
Get-PnPView -List $LIST_NAME -Identity $VIEW_NAME | Set-PnPView -Values @{ ViewQuery = $CAML }

実行すると、これまで表示されていた ホーム がなくなっていることが確認できます。これでニュースの一覧を表示できるようになりました。

脚注
  1. 注意点として、ドキュメント ライブラリの Web パーツは自身のサイトのドキュメント ライブラリしか表示できないという制約があります。 ↩︎

Discussion