2017-02-14 22 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», я не могу найти этот класс через приложение «Модули». Где я могу найти запрос и могу ли я его изменить? Или есть альтернативный подход, который я должен принять?

ответ

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()).

Множество вариантов его получения, но может потребоваться хотя бы несколько продвинутых макросов или пользовательское кодирование.