Могу ли я каким-то образом улучшить архитектуру моего модуля-оболочки?

StackOverflow https://stackoverflow.com/questions/2028338

Вопрос

Я разрабатываю 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

Я надеюсь, что это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top