Многоязычный SEO XML Sitemap для Sitecore
На торговой площадке Sitecore есть несколько модулей Sitemap, доступных для Sitecore. Но делает ли это то, что вы хотите?
Карта сайта XML отличный модуль.
Эта статья о создании вашей собственной карты сайта, которая работает не так, как популярный модуль Marketplace, и настолько проста, насколько это возможно. Благодаря интеграции, необходимой для вашего сайта, это трудно сделать в модуле.
Существующая карта сайта SEO XML для модулей Sitecore генерирует неправильные даты модификации и не является многоязычной. С некоторыми простыми настройками и кодом вы можете создать свой собственный
высокоинтегрированный sitemap.xml и использование других свойств из схемы, определенной на sitemaps.org, с дополнительной настройкой страницы.
Спецификации Sitemap.xml.
Тег
Обязательно или необязательно
Описание
<LOC>
требуется
URL с протоколом
<LastMod>
необязательный
Дата и время
<ChangeFreq>
необязательный
<Приоритет>
необязательный
от 0,0 до 1,0
По какой причине вы хотите sitemap.xml? Мой инструмент SEO говорит. Конечно, нет смысла, если у вас есть один или нет. Это то, как вы используете это.
Последний способ сложен, потому что страница может содержать много ссылок на компоненты или другие ссылки. По этой причине рекомендуется пропустить этот необязательный атрибут. Альтернатива Нет правильной поддержки для базовых страниц компонентов или более продолжительное время рендеринга и просматривайте ссылки, чтобы найти дату последнего изменения.
Индексируйте только те страницы, которые вы хотите.
Sitemap.xml и robots.txt также хороши для хакеров. Если не использовать должным образом, он может содержать некоторые интересные ссылки для них. Так что вам нужно знать, что индексировать, а что нет. Для «XML-модуля Sitemap» вы можете определить шаблоны для индексации или игнорирования. Существует риск, что вы разрешите некоторые тестовые страницы или целевые страницы, которые не предназначены для индексации поисковой системой. Вы можете предотвратить это с помощью <META NAME = "ROBOTS" CONTENT = "NOINDEX, NOFOLLOW"> на странице. Но конечно лучше исключить из карты сайта. Решение состоит в том, чтобы создать поле «Скрыть в SEO XML Sitemap» и разместить его на своих страницах для контроля поведения.
Тег changefreq
Changefreq - это всего лишь совет для поисковой системы. Чтобы сэкономить пропускную способность и циклы процессора, вы можете установить более высокое значение на заархивированных страницах. А используя разные значения, вы можете повысить вероятность того, что наиболее изменяемые страницы будут чаще посещать поисковые системы. Решением является создание поля «Приоритет XML Sitemap» и размещение его на ваших страницах для управления поведением.
Приоритетный тег
Приоритет Как упомянуто в Changefreq, настройки Приоритет - это просто руководство для Google или любой другой поисковой системы, которым необходимо следовать при индексации вашего сайта. Приоритет, который вы назначаете странице, не влияет на положение ваших URL на страницах результатов поисковой системы. Эта информация может быть использована поисковыми системами, чтобы сделать выбор из URL на том же сайте. Вы можете использовать этот тег, чтобы увеличить вероятность того, что наиболее важные страницы присутствуют в поисковом индексе.
Решение состоит в том, чтобы создать поле «Частота изменения XML-файла Sitemap» и разместить его на своих страницах для управления поведением.
Примечание. Назначение высокого приоритета всем URL-адресам на вашем сайте не будет иметь никакого эффекта. Поскольку приоритет является относительным, вы можете использовать его только для различения URL-адресов на вашем сайте.
Код для создания собственной SEO XML-карты сайта.
Примечание: существует другая версия этого кода с большим количеством кода, которая теперь называется SEO-процессором с включением robot.txt, см. SEO Процессор
Следующий файл Sitemap работает с полями на элементах страницы для управления изменением частоты и приоритета, а также возможностью скрытия.
using System.Collections.Generic; используя System.Text; использование System.Text.RegularExpressions; используя Sitecore.Data; используя Sitecore.Data.Fields; используя Sitecore.Data.Items; использование Sitecore.Links; пространство имен Mirabeau.Website.Helpers {общедоступный статический класс XmlSitemap {// общедоступная статическая строка на одном языке GetXml () {Database db = global :: Sitecore.Context.Database; var homeitem = global :: Sitecore.Context.Item.GetHomeItem (); var query = string.Format ("fast: {0} // *", EscapeSitecoreFastQueryPath (homeitem.Paths.FullPath)); var detailList = новый список <Item> (db.SelectItems (query)); detailList.Add (homeitem); var options = global :: Sitecore.Links.LinkManager.GetDefaultUrlOptions (); options.AlwaysIncludeServerUrl = true; return CreateSiteMapUrls (detailList, параметры); } // многоязычная общедоступная статическая строка GetXml (List <string> languagelist) {База данных db = global :: Sitecore.Context.Database; string sitemapLinks = string.Empty; foreach (var language в languagelist) {Язык currentSiteLanugage; if (Language.TryParse (language, out currentSiteLanugage)) {Sitecore.Context.SetLanguage (currentSiteLanugage, true); } var homeitem = global :: Sitecore.Context.Item.GetHomeItem (); var query = string.Format ("fast: {0} // *", EscapeSitecoreFastQueryPath (homeitem.Paths.FullPath)); var detailList = новый список <Item> (db.SelectItems (query)); detailList.Add (homeitem); var options = global :: Sitecore.Links.LinkManager.GetDefaultUrlOptions (); options.AlwaysIncludeServerUrl = true; options.LanguageEmbedding = LanguageEmbedding.Always; options.Language = Language.Parse (language); options.EmbedLanguage (LanguageManager.GetLanguage (язык)); sitemapLinks + = CreateSiteMapUrls (detailList, параметры); } вернуть sitemapLinks; } приватная статическая строка CreateSiteMapUrls (List <Item> detailList, UrlOptions urlOptions) {StringBuilder returnString = new StringBuilder (); const string defaultpagechange = "daily"; // Каждая страница поля Sitecore должна содержать это поле. var HideInSeoXmlSitemap = "Скрыть в SEO XML Sitemap"; var XmlSitemapPriority = "Приоритет XML Sitemap"; var XmlSitemapChangeFreq = "Частота изменения файла Sitemap XML"; foreach (Item item in detailList) {if (! item.GetCheckBoxValueDefaultTrue (HideInSeoXmlSitemap)) {// GetCheckBoxValueDefaultTrue для фильтрации нулевых значений, таких как элементы компонента var url = LinkManager.GetItemUrl (item, urlOptions); var prio = item.GetStringValue (XmlSitemapPriority); var changefreq = item.GetStringValue (XmlSitemapChangeFreq); if (string.IsNullOrEmpty (changefreq)) {changefreq = defaultpagechange; } if (string.IsNullOrEmpty (prio)) {returnString.AppendFormat ("<url> <loc> {0} </ loc> <changefreq> {1} </ changefreq> </ url>", url, changefreq); } else {returnString.AppendFormat ("<url> <loc> {0} </ loc> <changefreq> {1} </ changefreq> <priority> {2} </ priority> </ url> \ n", url , changefreq, prio); }}} return returnString.ToString (); } #region Методы расширения и помощники public static Item GetHomeItem (этот элемент Item) {global :: Sitecore.Sites.SiteContext site = global :: Sitecore.Context.Site; if (site == null) {return null; } global :: Sitecore.Data.Database db = global :: Sitecore.Context.Database; return db.GetItem (site.StartPath); } открытая статическая строка GetStringValue (этот элемент Item, строка fieldName) {if (item! = null && item.Fields [fieldName]! = null &&! string.IsNullOrEmpty (item.Fields [fieldName] .Value)) {возвращать элемент. Поля [FIELDNAME] .value; } return string.Empty; } public static bool GetCheckBoxValueDefaultTrue (этот элемент Item, строка fieldName) {CheckboxField checkBox = item.Fields [fieldName]; if (checkBox! = null) {return checkBox.Checked; } вернуть истину; } открытая статическая строка EscapeSitecoreFastQueryPath (string path) {return Regex.Replace (path, @ "([^ /] +)", "# $ 1 #"). Replace ("# * #", "*"); } #endregion}}
Макет (MVC) для одного языка
@using Mirabeau.Website.Helpers @ {Response.ContentType = "text / xml"; } <? xml version = "1.0" encoding = "UTF-8"?> <urlset xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9" xmlns: xsi = "http: // www. w3.org/2001/XMLSchema-instance "xsi: schemaLocation =" http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd " > @ Html.Raw (XmlSitemap.GetXml ()) </ urlset>
Пример макета для мультиязычности
@using Mirabeau.Website.Helpers @ {Response.ContentType = "text / xml"; } <? xml version = "1.0" encoding = "UTF-8"?> <urlset xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9" xmlns: xsi = "http: // www. w3.org/2001/XMLSchema-instance "xsi: schemaLocation =" http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd " > @ Html.Raw (XmlSitemap.GetXml (новый список <string> () {"en", "nl-NL"})) </ urlset>
Sitecore Предметы
Под шаблонами Sitecore. Создайте список изменений для выпадающего списка. И создайте поля XML Sitemap, используйте список changefreq для выпадающего списка для поля XML Sitemap Change Frequency.
Создать проверку и значение по умолчанию для поля XML Sitemap Priority
Создайте макет Sitemap и создайте ссылку на представление. Создайте шаблон Sitemap и установите макет Sitemap в __Standard Values. И создайте элемент карты сайта под главной страницей. С картой сайта в качестве имени.
Теперь вы можете сделать запрос к карте сайта с помощью /sitemap.aspx, чтобы изменить его на /sitemap.xml, который мы можем добавить в «Разрешенные расширения»
Сделайте возможным использование XML-URL для рендеринга макета.
Поместите это в файл /App_Config/Include/Mirabeau.SitemapXml.config
<configuration xmlns: patch = "http://www.sitecore.net/xmlconfig/"> <sitecore> <pipelines> <preprocessRequest help = "Процессоры должны быть производными от Sitecore.Pipelines.PreprocessRequest.PreprocessRequestProcessor"> <тип процессора = " Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel "> <param desc =" Разрешенные расширения (через запятую) »> aspx, ashx, asmx, xml </ param> </ processor> </ preprocessRequest> </ pipelines> < / sitecore> </ configuration>
Из-за усиления безопасности Sitecore я не разрешаю XML-файлы
Нет проблем, мы сообщаем поисковой системе, что такое URL карты сайта, используя robots.txt
Пользователь-агент: *
Карта сайта: /sitemap.aspx
Трубопровод или макет
Этот прототип кода использует макет. Также можно использовать конвейер, чтобы увидеть код из Карта сайта XML Использование макета - это очень простое стандартное решение, настройка не требуется, и вы также можете использовать кэш макета Sitecore.
Многоязычные сайты
На многоязычных сайтах вы должны разместить URL для всех языков в sitemap.xml. Этот код может сделать это, и его легко адаптировать к вашим потребностям.
Ссылки по теме
Мультисайт Многоязычный SEO Процессор
Модуль с поддержкой Sitecore Карта сайта XML
Требуется нулевая конфигурация и простота установки XML Sitemap Generator
Использование XML-модуля Sitemap в защищенной многосайтовой среде
Простой конвейер без записи на диск Простой файл Sitemap XML
Создайте карту сайта Google для сайта Million plus Sitecore items
Ultimate Sitemap XML на основе XML-файла Sitemap со связанными метаполями
Copyleft © 2017 . www.info-center.od.ua Информационный центр - Всегда в центре событий