前回の続きです。今回は、コンテンツクエリ Web パーツが既定では取得できない"更新日時"と"本文"の列情報を取得します。
[今回の目標画面]
列には通常私たちが目にする表示名とは別に内部名があります。また、列の情報の種類についても内部で使用される名前があります。今回使用するのは最初から用意されている列であるため内部名は決まっています。たとえば、「お知らせ」リストの主な列は次のようになっています。
Title (表示名) | Internal Name (内部名) | DisplayTypeName | Type |
---|---|---|---|
ID | ID | カウンタ | Counter |
タイトル | Title | 1行テキスト | Text |
更新日時 | Modified | 日付と時刻 | DateTime |
作成日時 | Created | 日付と時刻 | DateTime |
作成者 | Author | ユーザーまたはグループ | User |
更新者 | Editor | ユーザーまたはグループ | User |
本文 | Body | 複数行テキスト | Note |
有効期限 | Expires | 日付と時刻 | DateTime |
しかし、ユーザーが作成した列の場合は、特に日本語表記で名前を指定していると内部名はつど調べる必要があります。その確認方法はいろいろとあるのですが、また別の機会にご紹介したいと思います。
更新日時と本文列を取得する
作業概要
- Web パーツをエクスポートする
- Web パーツの情報 (*.webpart) を編集する
- ItemStyle.xsl を修正し、カスタムのスタイルを作成する
- 2.で編集した Web パーツ情報 (*.webpart) をインポートする
- インポートした Web パーツを配置し、スタイルを3. で作成したカスタムスタイルに変更する
新たに列情報を取得するにはWeb パーツのデータ(*.webpart) を一度エクスポートし、XMLデータを修正します。
Web パーツのエクスポート
- コンテンツ クエリ Web パーツの右上に表示される▼をクリックし、[エクスポート] をクリックします。
- 任意の名前でファイルをローカルに保存します。今回は"mycqwp.webpart" という名前で保存しておきます(※ メモ帳を使用している場合、既定では エンコードは UTF-8 になっているはずですが、念のためUTF-8 になっていることは確認しておいてください)。
Web パーツ情報の編集
次にエクスポートしたXMLファイルを編集します。次のタグを見つけます。
<property name="CommonViewFields" type="string" />
次のように変更し、編集日時列と本文列を取得できるようにします。
<property name="CommonViewFields" type="string" >Modified,DateTime;Body,Note</property>
タグ内には取得したい列名を "内部列名", "種類" の順に記述します。複数の列を取得する場合はセミコロンを使用します。
ItemStyel.xsl を編集する
ItemStyel.xsl を編集し、カスタムのスタイルを作成します。
- SharePoint Designer 2007 を起動し、コンテンツ クエリ Web パーツを配置しているサイトを開きます。
- [フォルダ一覧] から [Style Library(スタイル ライブラリ)] - [XSL Style Sheets] の順に展開し、ItemStyel.xsl をダブルクリックします。
- ItemStyle.xsl をチェックアウトします。
- XSLT 内でddwrt 関数を利用できるようにするため、先頭の xsl:stylesheet 要素の exclude-result-prefixes 属性に "ddwrt" を追加します。 また同要素内にddwrt で使用する名前空間を追加します。結果は以下の通りです(赤字の部分を追加しています)。
<xsl:stylesheet
version="1.0"
exclude-result-prefixes="x xsl cmswrt cbq ddwrt"
... (中略)
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/
DataView/runtime"> - <xsl:template name="FixedImageSize" match="Row[@Style='FixedImageSize']" mode="itemstyle">から対応する</xsl:template> までをコピーします。
- 一番最後のタグである</xsl:stylesheet>の直前に 4. の内容を貼り付けます。
- 貼り付けた内容の "<xsl:template name="FixedImageSize" match="Row[@Style='FixedImageSize']" mode="itemstyle">" の部分を次のように変更します。
<xsl:template name="すべてのお知らせ用スタイル" match="Row[@Style='すべてのお知らせ用スタイル']" mode="itemstyle"> - "<div class="description">" の前に次のタグを追加します。
<span style="color:black">[更新日時: <xsl:value-of select="ddwrt:FormatDate(string(@Modified),number('1041'),7)"/>
]</span>
<div class="description"> - "<xsl:value-of select="@Description" />" の部分を次のように変更します。
<div class="description">
<xsl:value-of select="@Body" />
</div> - 上書き保存します。「サイト定義ページの警告」ダイアログが表示されたら [はい] をクリックします。
- ファイルをマイナーバージョンでチェックインしておきます。
- SharePoint Designer 2007 を一旦終了しておきます(引き続き作業をする場合は開いたままでも構いません)。
Web パーツ情報をインポートする
編集した mycqwp.webpart をインポートします。
- IE を使用してコンテンツクエリWebパーツを追加したサイトを表示します。
- [サイトの操作]メニューから[ページの編集]をクリックします。
- "Web パーツの追加" をクリックします。
- Web パーツの追加画面右下に表示される "Web パーツギャラリーとオプションの詳細設定" リンクをクリックします。
画面右上の"Web パーツの追加" の下に表示される "参照"部分の▼をクリックし、[インポート]をクリックします。
先ほど編集した "mycqwp.webpart" ファイルを指定し、アップロードします。
アップロードした Web パーツをWeb パーツ領域に追加します。
コンテンツクエリ Web パーツのスタイル変更
コンテンツクエリ Web パーツに適用されているスタイルをカスタム定義のスタイルに変更します。
追加した Web パーツの[編集]メニューから[共有Webパーツの変更]をクリックします。
コンテンツのクエリツールパーツ内の"プレゼンテーション" セクションを開き、アイテムのスタイルを"すべてのお知らせ用スタイル" に変更し適用します。
以上で、更新日時と本文のデータが取得できるようになったはずです。Webパーツ上にエラーが表示される場合は、*.webpart および XSLT に記述ミスがあるはずですので見直してください。また、前回までに追加していた Web パーツは使用しませんので、削除しておいて構いません。
本文が取得できるようにはなりましたが、本文に HTML タグが表示されたままになっています。次回は、これを取り除きます。