В Sitefinity Sitemap генерирует неправильные URL - PullRequest
0 голосов
/ 10 апреля 2019

В моем приложении sitefinity, когда я генерирую карту сайта, она генерируется успешно, но карта сайта показывает двухязыковой префикс в URL для всех узлов.

Как сгенерированный URL-узел в моей карте сайта

   <url>    
    <loc>http://www.example.net/en/en/individual/customer- 
    service</loc>
    <priority>1</priority>
    <xhtml:link rel="alternate" hreflang="en" 
    ref="http://www.example.net/en/en/individual/customer-service" />
     <xhtml:link rel="alternate" hreflang="ar"
     ref="http://www.example.net/en/ar/individual/customer-service" />
     </url>

But I expect the generated url node like this

   <url>    
    <loc>http://www.example.net/en/individual/customer- 
    service</loc>
    <priority>1</priority>
    <xhtml:link rel="alternate" hreflang="en" 
    ref="http://www.example.net/en/individual/customer-service" />
     <xhtml:link rel="alternate" hreflang="ar"
     ref="http://www.example.net/ar/individual/customer-service" />
   </url>

1 Ответ

1 голос
/ 12 апреля 2019

Подводя итог тому, что обсуждалось в комментариях:

Проблема вызвана тем, что SubFolderUrlLocalizationStrategy имел следующий параметр: includeSubfoderPrefixForDefaultLanguage = True

Удаление параметра решает проблему.

Кажется, это ошибка в модуле Sitemap в этой версии Sitefinity, как, например, я не видел в v.10.2.

Один из способов сохранить параметр и преодолеть егопроблема заключается в том, чтобы подписаться на событие ISitemapGeneratorBeforeWriting и изменить записи карты сайта перед их сохранением, например, Заменить ("/ en / en /", "/ en /")

Эта статьяпоказывает как: https://knowledgebase.progress.com/articles/Article/How-to-modify-the-entries-in-sitefinity-sitemap-using-SitemapGeneratorBeforeWriting-event

protected void Application_Start(object sender, EventArgs e)
{
    Bootstrapper.Initialized += Bootstrapper_Initialized;
}

void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
    if (e.CommandName == "Bootstrapped")
    {
        EventHub.Subscribe<ISitemapGeneratorBeforeWriting>(evt => SitemapGeneratorBeforeWritingHandler(evt));
    }
}

void SitemapGeneratorBeforeWritingHandler(ISitemapGeneratorBeforeWriting @event)
{
    var entries = @event.Entries;
    // CRUD operations over the sitemap entries goes here
}
...