Использование ID в URL-адресах вместо UserKey


28.06.2012 || Раздел: || Контент KooBoo


Версия KooBoo на момент написания статьи: 3.02

Вступление: известно, что KooBoo использует Friendly URL, т.е. URL вида:

Kooboo-cms.ru/Articles/Detail/MyArticle1

Вместо, например:

Kooboo-cms.ru/index.aspx?cont=Articles&UserKey=MyArticle1

В указанном примере URL, текст "MyArticle1" является параметром UserKey, который автоматически генерируется при создании любого элемента содержимого в системе Kooboo.

Этот механизм хорошо работает, если Ваш контент на английском языке.

Но при создании, например, статьи на русском, UserKey будет сгенерирован также на русском языке из заголовка этого элемента содержимого. Что в итоге при использовании UserKey в URL адресах (используется по умолчанию) приведет к наличию в адресе символов, отличных от латинских (в нашем случае - русских в виде кодов), что не очень хорошо отразится на индексировании вашего сайта поисковыми системами.

Вариантов решения этого вопроса мне видится пока только три:
1) сложный: переписать алгоритм формирования UserKey - добавить транслитерацию русских символов (требует перепрограммирования и перекомпиляции ядра системы).
2) средний: использовать вместо UserKey другой идентификатор, например, Id.
3) простой: создавать сначала контент с английским названием, а после сохранения переименовывать на русское.

В этой статье рассмотрим средний вариант.

Помимо [UserKey] KooBoo для каждого элемента контента генерирует два идентификатора:

- [Id] - целое число, например - 100 или 546 (примечание: Id генерируется только, если Вы используете провайдер SQLServer/mysql/sqlce, при использовании провайдера по умолчанию (XML), Id не генерируется)

- [UUID] - текстовый набор символов (похож на GUID), например "8d217d3f-6c42-4456-8607-940ec2cd70c3" или "R7A2UMLD2TBB6LBF"

[UUID] слишком громоздкий, поэтому наш выбор падает на [Id], т.е. мы будет получать адреса в виде:

Kooboo-cms.ru/Articles/Detail/546

Рассмотрим данное решение на примере статей (генерируемых KooBoo по умолчанию при создании)

1) Нам нужно изменить правило формирования URL адреса при выводе списка статей

2) Нам нужно правильно "ловить" URL адрес при просмотре одной статьи

В панели администрирования сайта переходим на вкладку "Разработка" ("Development"), раскрываем список представлений ("Views") и выбираем группу "Article".

kooboo представления

Для начала выбираем кнопку "Редактировать" ("Edit") у представления "Article.List".

В коде представления меняем в текст "{UserKey = item.UserKey } " на {UserKey = item.Id}:

редактирование представления kooboo

Нажимаем кнопку "Сохранить и вернуться в список" ("Save & return").

Теперь переходим по кнопке "Редактировать" ("Edit") у представления "Article.Detail". В коде ничего не меняем.

Как указано на рисунке ниже:

1) в правом меню в блоке "Правила данных" ("DataRules") напротив "Article" нажимаем кнопку "Редактировать" ("Edit") (1).

2) в строке "Фильтр содержимого" ("Content filter") переходим также по кнопке "Редактировать" ("Edit") (2) (по умолчанию в этой строке будет текст: "UserKey == {UserKey}".

3) в раскрывшемся блоке "Фильтр" ("Filter") (3) вместо первого "UserKey" указываем "Id".

редактирование фильтров данных kooboo

Все сохраняем, вплоть до самого представления ("Сохранить и вернуться в список"/"Save & return").

Проверяем, путем перехода на сайт к списку статей. Если все сделано правильно, вы получите нужные адреса уже без UserKey.

При проверке может возникнуть следующая ошибка:

System.Data.SqlClient.SqlException: Conversion failed when converting the nvarchar value '...' to data type int.

Возможные причины: несоответствие параметра, указанного в представлении списка и детализированного представления контента.

Решение: убедитесь, то в списке и детальном просмотре используется один и тот же параметр, например Id или UserKey.

По такому же принципу можно переделать фильтрацию статей по категориям, т.к. там также используется UserKey для названий категорий.

© Элла С. (Автор: Ella Sea)

< Предыдущая статья

Изучаем пункт меню Настройки (Settings) административной консоли системы Kooboo

Следующая статья >

Включение и настройка filestream на уже существующей БД при помощи визуального интерфейса MS SQL Server Management Studio