Лучший подход к управлению псевдонимами элементов контента
Мы думаем о переходе с Kentico CMS на Kontent. Пока что мы нашли ответы на большинство наших вопросов, связанных с навигацией. Но один вопрос остается неясным. Как реализовать псевдонимы страниц в приложении MVC.NET+Kontent.
Не редкий бизнес-случай, когда какая-то страница, скажем, sub-productAA, перемещается с productA на ProductB.
Например: из /products / ProductA / sub-productAA становится /products / ProductB / sub-productsAA. Предположим, что sub-productAA рекламировался на стороннем веб-сайте по оригинальному URL-адресу: /products / ProductA / sub-productAA.
Теперь исходный URL мертв. Как справиться с этой ситуацией?
Другой пример, когда продукт был переименован, а имя slug также было переименовано, чтобы лучше соответствовать среднему значению продукта. И исходный URL был опубликован в другом месте. Как справиться с этим и правильно перенаправить на новый URL?
Спасибо,
1 ответ
Kontent не предоставляет встроенных средств для обработки псевдонимов страниц. Вам, как автономной CMS, решать, как сопоставлять элементы контента с URL-адресами.
Я не думаю, что для этого есть какое-то единственно правильное решение. Если у вас нет огромного количества псевдонимов для управления, вы можете обрабатывать их в Kontent, создав тип контента, который имеет ярлык и связанный элемент, чтобы вы могли использовать его для хранения псевдонимов и перенаправления на правильный элемент контента. Для вашего примера:
- Элемент типа содержимого продукта имеет ярлык "ProductB/sub-productsAA"
- элемент типа содержимого псевдонима имеет ярлык "ProductA/sub-productAA"
Затем у вас есть действие, которое извлекает контент из продуктов по ярлыку:
var response = await _deliveryClient.GetItemsAsync<Product>(new EqualsFilter($"elements.{Product.SlugCodename}", productUrlSlug));
и если ничего не возвращается, выполните еще один поиск по псевдонимам:
var response = await _deliveryClient.GetItemsAsync<ProductAlias>(new EqualsFilter($"elements.{ProductAlias.SlugCodename}", productUrlSlug));
Таким образом, вы сделаете второй вызов только в случае сбоя первого. Затем вы можете получить ярлык для связанного элемента и перенаправить клиента на правильный URL-адрес.
Обратной стороной является то, что редакторы контента должны управлять псевдонимами. Неплохая вещь, так как они должны думать о последствиях изменения URL-адресов.
Альтернативный подход - отслеживать псевдонимы на вашем сервере. Вы можете использовать веб-перехватчики для получения уведомлений об изменениях содержимого. Если ярлык продукта был изменен, вы можете сохранить старое значение и использовать настраиваемое промежуточное ПО для перенаправления на новую версию. Больше работы, но без редактора.