Шаблоны проектирования CMS и соображения - PullRequest
5 голосов
/ 10 января 2011

Я создаю cms для относительно простого сайта - портфолио, некоторых страниц общего содержания, собственного блога и т. Д.

Какие модели лучше всего рассмотреть, прежде чем погрузиться в дизайн.

Я хочу, чтобы система была максимально гибкой, но не слишком сложной.

Я искал несколько хороших ресурсов для обсуждения блогов и дизайна блогов, но не могу найти ничего хорошего.

Мой язык php, но я полагаю, что я ищу более независимый от языка совет.

Ответы [ 6 ]

11 голосов
/ 11 января 2011

Гибкость без сложности ... хорошая программа.

Может быть, вы гений, и вы сделаете что-то, что отвечает вашим потребностям.Но я думаю, что самая большая проблема, с которой вы столкнетесь, это безопасность и надежность .Так что действительно, воспользуйтесь другими советами на этой странице и посмотрите на WordPress, Drupal, Joomla и Ezpublish.Много безопасности уже сделано.И не только безопасность ...

Итак, изучите некоторые из этих инструментов, отследите их недостатки, проверьте их политику безопасности.Изучите, как они обрабатывают кэширование, сеансы, загрузку, управление абсолютным и относительным URL, документы (изображения, видео и т. Д.), Ajax, аутентификацию, идентификацию, acl, пользовательские интерфейсы, редактирование форматированного текста, миграции, создание шаблонов, компоновку страниц, фильтрацию контента.(Я пытаюсь удалить вещи, которые вам не нужны, плагины, абстракцию базы данных, точное кэширование, минимизацию css и js, все сверхсложные вещи, не требующиеся для простой CMS для одного экземпляра).Вскоре вы получите «картину» того, что они сделали.

Выполнив эту работу, вы наверняка заметите некоторые большие различия и ошибки.Вы начнете работать с irc и пламенными разработчиками, говоря им, что другие сделали лучший выбор.Вы начнете забывать бриться.Вы, возможно, сделаете некоторые вклады.Некоторые будут приняты, другие не будут.Старые разработчики ядра не любят, когда кто-то объясняет, почему они допустили ошибки (и они делают ошибки).

Теперь наступает день, когда у вас борода .Некоторые из ваших вкладов начнут выглядеть как вилки.У вас будут враги, друзья или последователи.И вы начнете ощущать силу.

И вы пойдете ирком и скажете богу, что мир безобразен, и что вы создадите первую CMS, которая будет гибкой, не будучи сложной.И люди будут плакать.И птицы будут бегать кругами.И вы сможете объяснить, каков шаблон проектирования CMS.

  • Я пользователь.Я знаю что я хочу.То, что я хочу, сделает пользователя счастливым.Я счастлив.
  • Вы не должны доверять коду от людей в очках
  • "MVC MVC MVC": и люди отвечают "что будет сделано"

Серьезно , еще есть место для хорошей CMS с прорывными инновациями, история ветвлений началась давно с phpNuke (насколько я помню).Но некоторые из реальных продуктов действительно подходят для большинства задач.

4 голосов
/ 11 января 2011

Я, вероятно, рискую репутацией здесь, но мой опыт показывает, что создание вашей собственной CMS может быть очень оправданным решением, особенно когда вы знакомитесь с текущими системами с открытым исходным кодом и понимаете, чего именно им не хватает с точки зрения функций, безопасности иличто нет.Открытый исходный код часто означает множество проблем обратной совместимости и неправильных архитектурных решений, которые нельзя легко изменить.

Я настоятельно рекомендую вместо того, чтобы использовать MVC, взглянуть на идеи, которые делают его привлекательным.

Одна из главных проблем с CMS - это ряд технологий, используемых для создания динамических веб-сайтов.: императивный php для логики, декларативный SQL для запросов данных, разметка HTML для интерфейса, императивный / функциональный javascript для динамического интерфейса, JSON для вызовов ajax и т. д. Чтобы поддерживать управляемость системы, необходимо поддерживать эти технологии в контролируемой и понятной среде, новсе же учитывают гладкую интеграцию.Знания и лучшие практики там.MVC - это всего лишь один из подходов к решению этой проблемы.

В то время я выбирал следующие принципы:

  • Объектно-ориентированный код со статическим вызовом (php - это одно-запустим, многие экземпляры объектов кода редко оправдываются), ничего, кроме одной строки кода инициализации в глобальном контексте
  • 100% разделения дизайна кода с использованием XSLT и процессора нестандартного содержимого
  • Пользовательский маршрутизатор, который может принять любой http-запрос и перенаправить его на зарегистрированные методы
  • Пользовательский контент-процессор, который может принимать произвольные выходные данные метода и конвертировать его в любой используемый формат, такой как xhtml, xml, json и т. Д., На основании запросапараметры (т. е. http://local/class/method.xhtml, http://local/class/method.json)
  • Одна копия кода для столько виртуальных веб-серверов, сколько необходимо
  • Построитель SQL-запросов (выбран для гибкости по ORM) для всех запросов к базе данных
  • Обязательная фильтрация ввода метода с функциями filter_ *

Я полагаю, вы можете выбрать несколько из них, которые вам нравятся:) И удачи!

2 голосов
/ 10 января 2011

Хорошим примером для начала является шаблон Model View Controller, или MVC.Этот шаблон предлагает разделить логику вашего приложения на следующие уровни: логика данных (модель), манипулирование или бизнес-логика (контроллер) и логика отображения (представление).

Это хороший шаблон для начала, когда вы 'По пути мы столкнемся с другими проблемами (и, следовательно, закономерностями).Следующий веб-сайт достаточно хорошо объясняет концепцию MVC: Принципы MVC

1 голос
/ 10 января 2011

Нет смысла изобретать велосипед, если вы все равно не пытаетесь его улучшить.

Есть много доступных CMS.Я лично работал с ezpublish.Есть и другие варианты, такие как drupal и т. Д. Это список всех доступных cms с открытым исходным кодом - Нажмите здесь

Если вы только пытаетесь учиться, то вы можете выбрать любой изпопулярный с открытым исходным кодом и работаем над ними, чтобы найти его архитектуру и дизайн.

Кроме того, я не думаю, что кто-либо может дать вам список шаблонов проектирования, которые были бы лучше всего подходят для инструмента CMS.Потому что каждый шаблон дизайна решает определенную проблему.И вам просто нужно выбрать шаблон проектирования в зависимости от конкретной проблемы, которую вы хотите решить в своем проекте.

0 голосов
/ 10 января 2011

Если ваш запрос - это портфолио, некоторые страницы общего содержания, только пользовательский блог, Wordpress будет простым и лучше.

В PHP так много доступных CMS, самым популярным из них является Joomla .

0 голосов
/ 10 января 2011

В наши дни написание собственной CMS - ужасная трата времени.Обычные решения с открытым исходным кодом - в наши дни Joomla, WordPress и Drupal - популярны - написаны тысячами людей, и хотя вы можете потерять небольшую гибкость, если будете использовать готовый вариант, это значительно компенсируется отсутствием необходимости переделывать все изцарапина.Если вы используете Drupal, вы также можете наслаждаться высококачественным, масштабируемым и т. Д. Кодом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...