コンテンツクエリ Web パーツを使用してサブサイトのアイテムを取得する場合、ルートのサイトコレクションが作成されていないとリンク機能が正しく動作しません。このことは以前の記事でもご紹介しました。
【参考: コンテンツ クエリ Web パーツのエラー 】
しかし、ルートのサイトコレクションを作成しなくてもリンク機能を有効にすることも可能です。ひとつの解決策として、その方法をご紹介しておきます。
解決策
そもそも問題となる固定のリンクの情報は、ContentQueryMain.xsl に記載されています。ここにはリンク先のアイテムにリダイレクトしてくれるはずの"CopyUtil.aspx" のURL が "/_layouts/CopyUtil.aspx" とハードコードされています。これをサイトのURLに合わせて編集してやれば、この場合の問題は解決します。
なお SharePoint Designer 2007 を使用するのがミソです。SharePoint Designer 2007 使用してこのファイルを編集することで、サイトごとに独自の編集が可能となります。
修正方法
- SharePoint Designer 2007 を起動し、コンテンツ クエリ Web パーツを追加したサイトを開きます。
- [フォルダ一覧] - [Style Library (スタイル ライブラリ)] - [XSL Style Sheets] を展開し、ContentQueryMain.xsl を右クリックしチェックアウトします。
- ContentQueryMain.xsl をダブルクリックします。
- 次のタグを見つけます。
<xsl:value-of select="concat('/_layouts/CopyUtil.aspx?
Use=id&Action=dispform&ItemId=',@ID,'
&ListId=',@ListId,'&WebId=',@WebId,'
&SiteId=',$SiteId)"/> - "/_layouts/CopyUtil.aspx" の部分をサイトのURLに応じて編集します。たとえば、私の環境では次のように編集しました。
<xsl:value-of select="concat('/sites/top/_layouts/CopyUtil.aspx?
Use=id&Action=dispform&ItemId=',@ID,'
&ListId=',@ListId,'&WebId=',@WebId,'
&SiteId=',$SiteId)"/> - 上書き保存し、マイナーバージョンとしてチェックインしておきます。
コメント