2017-02-14 52 views
0

私のKenticoサイトには、KenticoのSocial &コミュニティアプリを使用してTwitter、LinkedIn、Facebookに投稿を同期させるブログがあります。ブログ投稿を表示する変換(ページタイプ - >ブログ投稿 - >変換 - >デフォルト)では、投稿が表示される対応するソーシャルメディアサイトのアイコンをレンダリングしたいと考えています。アイコンは、対応するサイトのこのポストに直接リンクします。
使用している変換では、dbo.CONTENT_BlogPostテーブルのフィールドをレンダリングできるようです。しかし、我々は必要な情報はである:リンクKenticoブログの投稿を対応するソーシャルメディアの投稿

dbo.SM_FaceBookPost.FacebookPostExternalID

dbo.SM_LinkedInPost.LinkedInPostURL

は私がで使用されるクエリを見つけることができれば、私は仮定

をdbo.SM_TwitterPost.TwitterPostExternalIDこの変換では、必要なデータを得るためにいくつかの左結合を追加することができます。しかし、私はそのクラス名が 'cms.blogpost'であると見ていますが、Modulesアプリケーションを通してそのクラスを見つけることができません。クエリをどこで見つけることができますか?それを変更できますか?または、私が取るべき別のアプローチがありますか?

答えて

1

モジュールアプリケーションでcms.blogpostクラスが見つからないのは、それがページタイプであり、モジュールのカスタムクラスではないからです。ブログ投稿の実際の定義は、ページタイプアプリケーションで、ブログ投稿のコンテンツはデータベースのcontent_blogpostテーブルにあります。

あなたがそうのようなSQLクエリでデータを結合することができ、必要なデータを見つけるには:

SELECT TwitterPostID 
FROM View_CMS_Tree_Joined 
    INNER JOIN SM_TwitterPost ON DocumentGuid = TwitterPostDocumentGuid 

それとも、そのようなオブジェクトのクエリを使用することができます

int twitterPostID = CMS.SocialMarketing.TwitterPostInfoProvider.GetTwitterPostInfosByDocumentGuid(Eval<Guid>("DocumentGUID"), CMS.SiteProvider.SiteContext.CurrentSiteID).FirstObject.TwitterPostID 
1

そのクエリを非表示にすることができるかどうかはわかりません。 BlogPostは単なるページタイプなので、そのクラスを持つモジュールはなく、CMS_Document、CMS_Tree、およびCONTENT_BlogPostテーブルに含まれています。したがって、クエリが利用可能な場合は、BlogPostページタイプまたはCMS.Coreページタイプの下にある可能性があります。

情報を取得するには、いくつかのオプションがあります。 Text/XML変換(またはCMS.MacroEngine.MacroContext.Current.ResolveMacros("")を使用)でマクロを使用して、SM_FacebookPost項目を取得し、その上に.Where( "")を実行できます。それは長いマクロかもしれませんが、システム - >マクロ - >コンソールを使用していくつかのテストを行うことができます。

ASCX変換のカスタム変換方法を作成して、APIを使用してルックアップとロジックを実行できます(APIがない場合はCMS.DataEngine.QueryInfoProvider.ExecuteQuery()を使用)。

多くのオプションがありますが、少なくともいくつかの高度なマクロやカスタムコーディングが必要な場合があります。

関連する問題