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 }
実行すると今まであった ホーム がなくなっていることがわかります。これでニュースの一覧を出すことができました。
-
注意点として、ドキュメント ライブラリの Web パーツは自身のサイトのドキュメント ライブラリしか表示できない、という制約が発生します。 ↩︎
Discussion