Я создаю интерфейс для ecms. Основная цель фронтэнда - рендеринг html-страниц на основе контента, хранящегося в базе данных.
У меня есть одна таблица на страницу, каждая таблица состоит из поля xml с содержимым страницы и некоторыми метаданными.
(Я решил хранить XML в базе данных, чтобы использовать функции, предлагаемые SQL Server 2008, такие как проверка xquery или xsd)
Я думаю о том, как сохранить ссылки между страницами, чтобы в будущем можно было изменить схему URL (я не совсем уверен, что это требуется).
В настоящее время я выделил два типа внутренних ссылок:
- Обычные ссылки - как тег
<a>
, окруженный текстом.
- Список ссылок со встроенным контентом - например, список связанных новостей (для каждого элемента мне нужно отобразить заголовок со ссылкой и рефератом)
В настоящее время я вижу следующие решения:
для обычной ссылки:
- Храните его в окружении токена, например:
$PAGE_LINK[unique identifier of the content]
и замените такие токены правильными ссылками на этапе рендеринга.
(Этот подход взят из Livesite - ECMS, с которой я работал)
- Сохраните его как
<a href="local://unique identifier of the content">
и замените содержимое атрибута href.
с соответствующей ссылкой.
- Предположим, что схема URL является статической.
и для списка ссылок со встроенным контентом:
- Храните в базе данных как можно больше связей (чтобы использовать мой ORM).
Сохраните его как список уникальных идентификаторов содержимого в формате XML как часть содержимого XML на странице (это дает возможность заказа бесплатно и немного более гибко). Пример:
<related_articles>
<resource type="news" content_id="233"/>
<resource type="news" content_id="231"/>
<resource type="blog_post" content_id="233"/>
</related_articles>
Вопросы:
Знаете ли вы какие-либо другие подходы к этой проблеме? Как это делается в ведущих системах CMS, таких как: Drupal, Joomla, N2, Wordpress и так далее? Какое решение вы бы выбрали?