Sitecore не разрешает URL-адреса редактора форматированного текста при отображении страницы

У нас возникают проблемы со вставкой ссылок в форматированный текст в Sitecore 6.1.0. Когда вставляется ссылка на элемент sitecore, она выводится как:

http://domain/~/link.aspx?_id=8A035DC067A64E2CBBE2662F6DB53BC5&_z=z

Вместо фактического разрешенного URL:

http://domain/path/to/page.aspx

Эта статья подтверждает, что это должно быть решено в конвейере рендеринга:

в Sitecore 6 он вставляет специально отформатированную ссылку, содержащую Guid элемента, на который вы хотите сослаться, затем, когда элемент отображается, специальная ссылка заменяется фактической ссылкой на элемент.

Конвейер имеет метод ShortenLinks, добавленный в web.config.

<convertToRuntimeHtml>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.PrepareHtml, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.ShortenLinks, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.SetImageSizes, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.ConvertWebControls, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.FixBullets, Sitecore.Kernel"/>
    <processor type="Sitecore.Pipelines.ConvertToRuntimeHtml.FinalizeHtml, Sitecore.Kernel"/>
</convertToRuntimeHtml>

Поэтому я действительно не понимаю, почему ссылки все еще отображаются в формате идентификатора, а не в виде полных SEO-татических URL-адресов. У кого-нибудь есть подсказки?

Спасибо, Адам


person Adam Hopkinson    schedule 09.02.2010    source источник


Ответы (3)


Это будет поведение по умолчанию, если вы используете sc:fld для отображения значений полей. Это устаревшее поведение, оставшееся от Sitecore 5, которое не заменяло направляющие в ссылках на элементы.

Если вы хотите использовать новые функции Sitecore 6, вы должны вместо этого использовать sc:field

person Nick Allen    schedule 09.02.2010
comment
Чтобы немного расширить этот ответ, конвейер ‹renderField /› — это место, где ссылки расширяются из упомянутого формата идентификатора в полный URL-адрес. Метод расширения sc:field вызывает конвейер renderField, если вы используете XSL. Если вы используете программный код для отображения ссылок, вы можете использовать класс FieldRenderer. Вы также можете использовать элемент управления FieldRenderer в своих макетах/вложенных макетах (или любой другой элемент управления, производный от элемента управления FieldRenderer). Этот документ дает вам небольшое представление об элементе управления FieldRenderer: sdn. sitecore.net/Reference/Sitecore%206/ - person Adam Weber; 10.02.2010

Если вы имеете дело с большим количеством изменений кода для реализации FieldRenderer, возможно, стоит рассмотреть возможность использования Sitecore.Links.LinkManager.ExpandDynamicLinks(строковый текст, параметры UrlOptions). Он анализирует ссылки и ссылки на элементы мультимедиа, которые могут содержаться в поле Rich Text.

person Julia    schedule 06.06.2010
comment
Использование предложенной вами функциональности по-прежнему отлично работает, если вы работаете с архитектурой генерации кода, где вы полагаетесь на необработанное значение поля и хотите заменить ссылки. - person VilladsR; 12.02.2016

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

<sc:FieldRenderer runat="server" ID="frBody" FieldName="Body"/>
person crabCRUSHERclamCOLLECTOR    schedule 03.04.2012