Могу ли я каким-то образом улучшить архитектуру моего модуля-оболочки?
-
19-09-2019 - |
Вопрос
Я разрабатываю CMS для частного проекта, который должен упростить редактирование веб-сайта.Он поддерживает модульность.Тем не менее, он все еще находится в стадии бета-тестирования, и теперь я спрашиваю, видите ли вы что-то, что я мог бы улучшить, или у вас есть какие-то совершенно другие подходы к этому сценарию.
Прежде всего, у меня есть "темы", которые представляют собой набор HTML, CSS и, возможно, JS.Каждая тема может содержать разные стили, каждый из которых находится в отдельных файлах (например, full-width.html, fluid.html и т.д.).Затем администратор может выбрать другой стиль для разных страниц.На некоторых страницах есть только 1 столбец, на некоторых есть боковые панели и т.д.
В настоящее время способ, которым это работает, заключается в том, что стиль HTML выглядит следующим образом:
<html>
<body>
<div id="header">{block id="header"}</div>
<ul>
{blocks id="list"}
{block}
<li>
{content}
</li>
{/block}
{/blocks}
</ul>
</body>
</html>
Создатель темы может размещать "блоки", которые определяют, где администратор может размещать модули.Эти модули могут быть просто текстовыми или содержать более сложный HTML-код, такой как shoutbox или форма входа в систему.В любом случае, все блоки должны иметь идентификаторы, за исключением тех, которые находятся внутри другого блока.Таким образом, когда администратор решит, где разместить модули, он получит форму типа:
Header module: --select--
List modules:
--select--
--select-- (automatically adds new selects as needed)
Где --select- это поле выбора HTML, содержащее все установленные модули.Идентификатор используется для того, чтобы администратору было проще понять, куда помещается выбранный модуль на сайте, без необходимости сохранять изменения и предварительного просмотра.
Создатель темы способен размещать несколько блоков с тегом {blocks}.Это означает, что администратор может разместить в нем несколько модулей, например, в Wordpress у вас может быть множество модулей "теги", "логин", "партнеры" и т.д. На боковой панели.Количество модулей может быть ограничено с помощью {blocks limit="5"}.У меня могли бы быть и другие настройки.
Если блок указан на странице как {block id="header"}, то это означает, что в него будет подставлено содержимое выбранного модуля для блока.Однако, если это {block}{/блокировать}, то создатель темы должен использовать {content} где-то между тегами, чтобы указать место для содержимого.Он также может использовать {name} для указания имени модуля и т.д.
В целом, есть ли какие-то улучшения, которые я мог бы сделать по этому поводу?Есть ли у вас Любой предложения?
И самое главное, пытаюсь ли я перепроектировать уже существующую мощную модульную систему, которую мне следует использовать вместо нее?
Решение
Посмотри на это статья о Facelets.Это не имеет значения, если вы не специалист по Java.Просто взгляните на конструкции facelet в середине статьи.
На практике эти конструкции очень удобны, так что, возможно, вы найдете там что-то, что захотите добавить в свою cms.
Другие советы
пытаюсь ли я перепроектировать уже существующую мощную модульную систему, которую я должен использовать вместо этого?
Я могу придумать два, которые соответствуют описанию:Распорки с плитками и веб-сервис квадратное пространство.
Взгляните на NVelocity из стека Castle: он очень мощный, и похоже, что вы пытаетесь немного изобрести велосипед.
http://www.castleproject.org/others/nvelocity/index.html
Я надеюсь, что это поможет.
Оформить заказ на систему шаблонов django
http://docs.djangoproject.com/en/dev/topics/templates/#topics-templates