Access Kentico 12 Альтернативное значение URL - PullRequest
2 голосов
/ 20 февраля 2020

Я ищу способ получения альтернативного значения URL для страницы в kentico.

Следуя этому примеру, чтобы включить альтернативные URL в Kentico 12 SP: https://docs.kentico.com/k12sp/developing-websites/configuring-page-urls-on-mvc-sites/enabling-alternative-urls-for-pages

Я застрял, пытаясь получить доступ к значению альтернативного URL-адреса программно. Любые указатели на то, как я могу получить значение будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2020
var altLink = new DataQuery()
                .From("CMS_AlternativeURL")
                .Where("AlternativeUrlUrl = @URL", new QueryDataParameters { new 
DataParameter("@URL", altURL) })
                .Execute()
                ?.Tables[0]
                ?.AsEnumerable();

            if (altLink != null)
            {
                var altLinkFirst = altLink
                    .ToList()
                    .FirstOrDefault();
                page = new TreeProvider()
                    .SelectSingleDocument(altLinkFirst.Field<int>("AlternativeUrlDocumentID"));

Таким образом, CMS_AlternativeURL - это таблица с парами alturl и url. Затем я передаю строку в качестве пути псевдонима, пытаюсь найти его в дереве провайдера, и если я не могу его найти, я запускаю его, который связывает альтернативный URL (заданную строку), и он возвращает обратную связь с documentId, если он существует.

если вместо этого вы пытаетесь получить альтернативные URL-адреса из treenode, запустите запрос данных, где AlternativeUrlDocumentID = documentmentid для treennode.

2 голосов
/ 20 февраля 2020

Вы пытались использовать AlternativeUrlInfoProvider класс?

Вы можете сделать что-то вроде этого, если у вас есть страница:

   var altUrl = AlternativeUrlInfoProvider.GetAlternativeUrls()
                .Where("AlternativeUrlDocumentID", QueryOperator.Equals, page.DocumentID).FirstOrDefault();
...