Можно ли как-то улучшить архитектуру моего модуля? - PullRequest
1 голос
/ 08 января 2010

Я разрабатываю 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, такой как чат или форма входа. В любом случае, все блоки должны иметь идентификаторы, кроме тех, которые находятся внутри другого блока. Таким образом, когда администратор решит, где разместить модули, он получит такую ​​форму:

 Header module: --select--
 List modules:
     --select--
     --select-- (automatically adds new selects as needed)

Где --select-- - это окно выбора HTML, содержащее все установленные модули. Идентификатор используется для того, чтобы администратору было легче понять, где выбранный модуль находится на сайте, без необходимости сохранять изменения и предварительный просмотр.

Создатель темы может разместить несколько блоков с тегом {blocks}. Это означает, что администратор может разместить в нем несколько модулей, например, в Wordpress вы можете иметь «теги», «логин», «аффилиаты» и т. Д. Множество модулей на боковой панели. Количество модулей может быть ограничено с помощью {blocks limit = "5"}. У меня могут быть и другие настройки.

Если блок указан на странице как {block id = "header"}, то это означает, что содержимое выбранного модуля для блока будет подставлено в него. Однако если это {block} {/ block}, то создатель темы должен использовать {content} где-то между тегами, чтобы указать место для контента. Он также может использовать {имя} для указания имени модуля и т. Д.

В целом, могу ли я улучшить это? У вас есть какие-либо предложения?

И самое главное, пытаюсь ли я переделать уже существующую мощную модульную систему, которую я должен использовать вместо этого?

Ответы [ 4 ]

2 голосов
/ 17 января 2010

Посмотрите на эту статью о Facelets . Неважно, если вы не Java-парень. Достаточно взглянуть на лицевые конструкции в середине статьи.

На практике эти конструкции очень удобны, поэтому, возможно, вы найдете там что-то, что вы захотите предоставить в своей cms.

1 голос
/ 23 января 2010
1 голос
/ 23 января 2010

Посмотрите на NVelocity из стека Castle, он очень мощный и выглядит так, будто вы пытаетесь немного изобрести велосипед.

http://www.castleproject.org/others/nvelocity/index.html

Надеюсь, это поможет.

1 голос
/ 17 января 2010

я пытаюсь изменить дизайн уже существующая мощная модульная система, которую я следует использовать вместо?

Я могу вспомнить два, которые соответствуют описанию: Struts with Tiles и веб-сервис squarespace .

...