2017-02-14 126 views
0

我的Kentico网站有一个使用Kentico的社交社区应用程序将其帖子同步到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页面类型下。

你有几个选项来获取信息。您可以在文本/ XML转换中使用宏(或使用CMS.MacroEngine.MacroContext.Current.ResolveMacros(""))来获取SM_FacebookPost项目并在其上执行.Where(“”)。它可能是一个很长的宏,但是你可以使用System - > Macros - > Console来做一些测试。

您可以为ASCX转换创建自定义转换方法,以使用API​​执行查找和逻辑(或者如果没有API,则使用CMS.DataEngine.QueryInfoProvider.ExecuteQuery())。

大量的选项来获取它,但可能需要至少一些高级的宏或自定义编码。