В версии 2.1.3 (бета, которой доступна для тестирования и экспериментов), появится еще одна возможность - создавать правила для форматирования "названий для URLов" (URL title) страницы при их автоматической генерации. "Название для URL" - это отдельное поле в настройках страницы и может отличаться и от названия страницы, и от названия пункта меню на сайте.
Упрощенно, путь к странице формируется добавлением "названий для URL" страницы и ее "предков" к имени узла.
Версия 2.1.1: http[s]://<имя узла>[/<код языка>]/<путь к странице>.aspx
Правила задаются в конфигурационном файле C1: /App_Data/Composite/Composite.config:
Правила (точнее наборы из правил) добавляются в разделе <UrlFormatters>. Для каждого набора правил должны быть заданы значения таких атрибутов в элементе <add/>:
Версия 2.1.1: http[s]://<имя узла>[/<код языка>]/<путь к странице>.aspx
Версия 2.1.3: http[s]://<имя узла>[/<код языка>]/<путь к странице>
Напр:
http://www.contoso.ru/Products/Product-A/Features
Напр:
http://www.contoso.ru/Products/Product-A/Features
Когда вы создаете страницу, то "названия для URLа" генерируется автоматически. Обычно берется название страницы (Page title), пробелы заменяются дефисами, а некодированные символы (напр., &) убираются.
Правила форматирования URLов, которые я упомянул в начале сообщения, позволяют:
- контролировать, как именно формируется такое URL-название при создании страницы
- и валидировать его при редактировании страницы.
С их помощью можно настроить замену одних символов другими, например, пробел можно заменять на дефис или подчеркивание.
Правила могут быть обязательными и необязательными. И те и другие срабатывают при создании страницы, а вот при редактировании и сохранении уже существующей страницы, срабатывать будут только обязательные - в качестве валидаторов в поле "Названия для URL" (URL title).
Правила задаются в конфигурационном файле C1: /App_Data/Composite/Composite.config:
<configuration>
...
<Composite.Core.Urls defaultPageUrlProviderName="Default">
<PageUrlProviders>
<add name="Default" type="Composite.Plugins.Routing.Pages.DefaultPageUrlProvider, Composite" />
</PageUrlProviders>
<UrlFormatters>
<add name="StringReplace" type="Composite.Plugins.Routing.UrlFormatters.StringReplaceUrlFormatter" mandatory="true">
<ReplacementRules>
<add oldValue=" " newValue="-" />
<add oldValue="?" newValue="" />
<add oldValue="#" newValue="" />
</ReplacementRules>
</add>
<!--add name="LowerCase" type="Composite.Plugins.Routing.UrlFormatters.ToLowerCaseUrlFormatter" mandatory="false" /-->
<add name="Aplhabets" type="Composite.Plugins.Routing.UrlFormatters.StringReplaceUrlFormatter" mandatory="true" rulesFile="~/App_Data/Composite/Configuration/UrlFormatting.xml" />
</UrlFormatters>
</Composite.Core.Urls>
</configuration>
...
<Composite.Core.Urls defaultPageUrlProviderName="Default">
<PageUrlProviders>
<add name="Default" type="Composite.Plugins.Routing.Pages.DefaultPageUrlProvider, Composite" />
</PageUrlProviders>
<UrlFormatters>
<add name="StringReplace" type="Composite.Plugins.Routing.UrlFormatters.StringReplaceUrlFormatter" mandatory="true">
<ReplacementRules>
<add oldValue=" " newValue="-" />
<add oldValue="?" newValue="" />
<add oldValue="#" newValue="" />
</ReplacementRules>
</add>
<!--add name="LowerCase" type="Composite.Plugins.Routing.UrlFormatters.ToLowerCaseUrlFormatter" mandatory="false" /-->
<add name="Aplhabets" type="Composite.Plugins.Routing.UrlFormatters.StringReplaceUrlFormatter" mandatory="true" rulesFile="~/App_Data/Composite/Configuration/UrlFormatting.xml" />
</UrlFormatters>
</Composite.Core.Urls>
</configuration>
Правила (точнее наборы из правил) добавляются в разделе <UrlFormatters>. Для каждого набора правил должны быть заданы значения таких атрибутов в элементе <add/>:
- name: Название набора правил форматирования URLа.
- type: Тип используемый для форматирования. Тип можно использовать для разных наборов - например, StringReplaceUrlFormatter для замены определенных символов.
- mandatory: значение "true" здесь - значит набор правил обязательный; иначе ("false") - нет.
Если самих правил в наборе очень много, имеет смысл вынести их в отдельный файл специального формата - в папке /App_Data/Composite/Configuration, а в атрибуте rulesFile элемента набора правил нужно будет указать путь к этому файлу (в примере выше, "Alphabets"). Корневым элементом такого внешнего файла должен быть <ReplacementRules/>.
В версии 2.1.3 используются минимум два встроенных типа для форматирования:
- StringReplaceUrlFormatter
- ToLowerCaseUrlFormatter
StringReplaceUrlFormatter
StringReplaceUrlFormatter заменяет один символ другим. Его можно использовать для создания нескольких наборов правил. Сами правила добавляются при помощи элемента <add/> в элементе <ReplacementRules/> с такими атрибутами:
- oldValue: символ(ы), которые нужно заменить
- newValue: символ(ы), которыми заменяют
- "Special Characters"
- "Alphabets"
"Alphabets" заменяет символы не в ANSI-кодировке ('extended Latin', 'Cyrillic') назначенными соответствиями из ANSI, напр., "Продукты" > "Produkty". Сами правила замены определены во внешнем файле /App_Data/Composite/Configuration/UrlFormatting.xml.
ToLowerCaseUrlFormatter
ToLowerCaseUrlFormatter переводит буквы из верхнего регистра в нижний, напр. "Produkty" > "produkty". Набор правил на его основе не требует списка отдельных правил. В Composite.config этот набор правил закомментирован, т.е. по умолчанию, не используется.
Комментариев нет:
Отправить комментарий