💻

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

1 min read

この記事ははてなブログに 2021/5/6 に投稿したものの転載です。

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

ログインするとコメントできます