Я перестраиваю веб-сайт, на котором много контента, добавляемого пользователями (посты, фотографии, события и т. Д.). Этот контент попадает в разделы (музыка, магазин и т. Д.); то есть нормальная CMS.
Я хочу, чтобы каждый фрагмент контента наследовался от базового объекта контента (многостоловое наследование). Это означает, что весь контент можно легко запрашивать, он аккуратный и расширяемый (и нет необходимости переписывать все базовые вещи, такие как «creation_by», «title», «slug» и т. Д.)
ContentObj
> Blog Post obj
> Event Post obj
> Podcast Post obj
> ... etc.
Довольно прямолинейно.
Когда дело доходит до организации, различные объекты контента / модели должны иметь возможность быть назначенными разделу (то есть объект подкаста находится в разделе «Музыка»). Кроме того, раздел должен иметь возможность назначать себя родительскому разделу ('Words> Blog> General>'). Опять же, это довольно стандартная идея в CMS.
В идеале, я хочу, чтобы такая организация была полностью универсальной (так же, как у меня есть универсальное решение для контента). Я имею в виду древовидную структуру, в которой каждый узел представляет собой либо секцию, либо модель объекта contentobject.
root
> section1
> subsection 1 > contentobj1
> subsection 2 > contentobj2
> section2
> contentobj3
> contentobj4
Цель этой универсальной настройки - получить очень СУХОЙ схему URL-адресов и систему шаблонов. Вам потребуется всего два или три шаблона. Вы заполняете страницу в зависимости от того, какой URL запрошен пользователем, и вам никогда не нужно жестко кодировать URL, такие как / blog ///.
У меня проблемы с пониманием того, как написать эту древовидную структуру в приложении, управляемом базой данных. Было бы легко иметь раздел модели, которому вы можете назначить модели контента. Но когда дело доходит до подразделов, это немного сложнее. Кроме того, как абстрагировать схему URL-адреса, чтобы раздел мог иметь столько подсекций, которые указывают на объект содержимого, без фактического жесткого кодирования URL-адресов?
По сути, я хочу написать структуру / каркас, где контент и организация отделены друг от друга, а схема URL / шаблона полностью отделена от фактического контента. Раньше у меня было бы приложение-блог, приложение-событие, но наверняка у меня должно было быть приложение-контент, которое управляет всем контентом сайта, и, возможно, приложение-организация, которое управляет разделами и т. Д.