Link Kentico 博客 post 到相应的社交媒体 post

Link Kentico blog posts to corresponding social media post

我的 Kentico 站点有一个博客,该博客使用 Kentico 的社交和社区应用程序将其 post 同步到 Twitter、LinkedIn、and/or Facebook。在显示博客 post 的转换(页面类型 -> 博客 post -> 转换 -> 默认)中,我希望为相应的社交媒体网站呈现一个图标,其中 post 也出现。该图标将 link 直接指向相应站点上的此 post。
看来我们正在使用的转换能够呈现 dbo.CONTENT_BlogPost table 中的字段。但是,我们需要的信息在:

dbo.SM_FaceBookPost.FacebookPostExternalID

dbo.SM_LinkedInPost.LinkedInPostURL

dbo.SM_TwitterPost.TwitterPostExternalID

我假设如果我能找到此转换使用的查询,我可以添加一些左联接来获取我需要的数据。但是,虽然我看到它的 class 名称是 'cms.blogpost',但我无法通过模块应用程序找到 class。我在哪里可以找到查询,我可以修改它吗?或者我应该采取其他方法吗?

不确定您是否能够找到该查询,因为它可能被隐藏了。 BlogPost 只是一种页面类型,因此没有包含 class 的模块,它包含在 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() )。

获得它的选项很多,但可能至少需要一些高级宏或自定义编码。

您不会在模块应用程序中找到 cms.blogpost class,因为它是一种页面类型,而不是来自模块的自定义 class。您可以在页面类型应用程序中找到博客 post 的实际定义,并在数据库的 content_blogpost table 中找到博客 post 的内容。

要查找您需要的数据,您可以像这样在 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