Как сделать самописную cms

Добавил пользователь Дмитрий К.
Обновлено: 05.10.2024

Самописные системы управления контентом сайта похожи на популярные решения, как два брата: родственный функционал, схожие структуры-характеры, даже внешний дизайн, обращающийся к одним и тем же шаблонам. Но, как и люди, в разных ситуациях CMS проявляют себя по-разному, демонстрируя достоинства и недостатки.

CMS: писать или не писать?

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

Самописную CMS можно использовать в случаях, когда:

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

Есть ли плюсы у самописных CMS?

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

Почему SEO-оптимизаторы не любят самописные CMS

Спорный уровень безопасности

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

У самописных систем распространенных уязвимостей может не возникать. Но кто и как проверяет такие CMS на безопасность? Только сама команда разработчиков – или разработчик и тестировщик в одном лице. Поэтому безошибочность работы системы зависит от квалификации специалиста, его опыта и дотошности.

Трудности доработки

Для доработки самописной CMS приходится привлекать подрядчиков, которые не только берут деньги за услуги, но и склонны долго обрабатывать запрос. Мы с коллегами редко сталкиваемся с максимально проработанным функционалом системы управления сайтом, позволяющим проводить работы по оптимизации и менять настройки максимально оперативно. Бывает и так: мы получаем доступ к системе, в админке сайта вносим все нужные изменения, сохраняем их – но при проверке обнаруживается, что на самом сайте изменения не отображаются. Чтобы выяснить причину ошибки, приходится искать корни проблемы в коде, а после – программиста для ее устранения. Для клиента это оборачивается финансовыми расходами, для нас – потерей времени. А в SEO скорость внесения изменений на сайт важна.

Внимание: перенос сайта

При переносе сайта, использующего самописную CMS, на другую систему управления контентом процесс усложняют технические сложности: необходимость переноса баз данных, сохранения структуры каталога, адресации ссылок, файлов, стилей и другие. К примеру, для многих популярных CMS (Bitrix, WordPress, Joomla) существуют готовые решения для конвертации баз данных, переноса контента и файлов, настройки редиректов со старых URL на новые. В результате, как правило, останется лишь доработать мелкие моменты – и перенос на этом закончится. В случае с самописными CMS один только перенос базы данных может стать долгой и нетривиальной задачей.

На пороге принятия решения

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

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

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

1. Жесткая привязка к одному разработчику

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

Ситуация с самописными CMS выглядит абсолютно так же — приобретая или устанавливая самописную систему, клиент попадает в полную зависимости от ее разработчика, которая выражается в следующем:

изменение ценовой политики или лицензии на использование CMS находится исключительно в сфере ответственности автора;

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

2. Аудит безопасности

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

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

3. Малая распространенность системы

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

4. Проработка системной архитектуры

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

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

4. Качество кода

5. Программистам для программистов

Давайте вспомним, почему Windows, при всей своей проблемности и ошибочности, до сих пор занимает лидирующее место среди операционных систем, используемых пользователями? По простой, в сущности, причине — она проста для освоения и не требует специфических знаний.

Итак, помимо того, что наш автор должен быть разработчиком, специалистом по безопасности и системным архитектором — кроме этого, он должен быть еще и специалистом по юзабилити.

6. Отсутствие полноценной пользовательской документации

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

7. Отсутствие API

Почему Twitter в одночасье стал настолько популярен? Почему Yandex.Карты с некоторых пор можно встретить практически повсеместно? Ответ прост — полноценный API, который позволяет программистам разрабатывать на его основе сторонние приложения.

Интерфейс прикладного программирования (иногда интерфейс программирования приложений) (англ. Application Programming Interface, API [эй-пи-ай]) — набор готовых классов, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для её использования во внешних программных продуктах.

И хотя API не является обязательным атрибутом CMS, его наличие ощутимо упрощает разработку сторонних приложений для сайта, таких как, например — связь с внутренними системами компании (SAP, SRM, модули электронной торговли и документооборота).

8. Проблема наличия лазеек

В случае же самописной CMS — таких гарантий нет, поскольку нет ни пользовательского аудита, ни специализированного. А малая распространенность системы позволит довольно легко скрыть наличие лазейки, если ее разработчик будет разумен и осторожен. Но только вот для пользователя такой системы это не сулит ничего хорошего.

9. Отсутствие профессионального сообщества и службы поддержки

Популярные Open Source CMS хороши своими открытыми сообществами, в которых можно быстро найти ответ на большинство типовых задач. Поддержка проприетарных систем управления всегда обеспечивается службой поддержки и help desk. А к кому обращаться в случае использования самописной системы?

10. Отсутствие поддержки сторонних специалистов (бес- и платных)

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

11. Отсутствие профессиональных тестировщиков

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

12. Отсутствие четкого вектора монетизации или скрытый вектор (для бесплатных CMS)

Все мы прекрасно понимаем, что разработка CMS — дело сложное и отнимающее много времени, которое может быть потрачено на разработку оплачиваемых проектов. Соответственно, автор системы должен каким-то образом покрывать недополученную прибыль. Например, одним из таких способов является перевод системы на коммерческие рельсы.

Процесс выглядит так — начала пользователям предлагается система в качестве бесплатного ПО, но с определенной версии (чаще всего той, с которой система приобретает более-менее завершенный и полнофункциональный вид), автор заявляет, что отныне все обновления будут платными. То есть все те, кто уже успел поставить, настроить и подогнать под свои нужды систему могут или оставаться на старой версии, либо же платной получать обновления.

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

Выводы

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

Из своей личной практики скажу, что уже несколько раз я сталкивался с самописными CMS с такой архитектурой, что перенос сайта на новую систему в одном случае стоил заказчику на 20% больше, чем стоимость предыдущей разработки (не учитывая стоимость нового сайта), а в других — перенос приходилось осуществлять практически вручную, поскольку создавать систему импорта было просто нецелесообразно.

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 3 года назад .

Многие используют самописные CMS. Какие их преимущества по сравнению с распространенными (joomla, drupal, wordpress и т.д.)?

Самописная это хорошо, но как по мне, то проще взять готовую, но с открытым кодом и доработать. Меньше затрат времени и быстрее поучаешь результат. Это если есть ограничения по времени; если ограничений нет, то да, лучше самому курить тему. Я когда начинал, то за основу брал .

Во-первых, своя CMS обладает всеми нужными свойствами.
Во-вторых, свою CMS легче расширять.
В-третьих, взломщику самописная CMS неизвестна, поэтому он может и не понять, откуда начинать ломать.
В-четвертых (вытекает из во-вторых), вряд ли кто-то согласится поддерживать чужую CMS, поэтому с заказчика можно и за это денег содрать.
В-пятых, фраза "на нашей CMS работает уже %n% сайтов" значительно повышает самооценку программиста/ов.

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

Уже второй год работаю над своей CMS. Из самых весомых плюсов могу выделить один единственный в самом деле важный. Я получил огромный опыт в разработке, я начал с уважением относиться к другим ЦМС, я осмыслил детали, на которые раньше даже внимания не обращал. И чем дальше я работаю в этом направлении, тем больше я приближаюсь к профессионализму. Потому что осознание собственных ошибок это первый шаг к понимаю чужих.

Никаких преимуществ (уж точно перед тремя перечисленными)

Куча еще не отловленных глюков и не доработок. (Над своей CMS работаете вы + сосед по лестничной площадке, а над joomla например целое сообщество - одно дело движок написать, другое его в актуальном состоянии поддерживать и постоянно пополнять новыми расширениями )

"У самописной есть больше вероятность, что она будет более защищенная" вот это только при условии что ее разработывал весьма сильный программист и что исходников для изучения дыр в сети не появится - хотя народные умельцы не сломают так уронят (это без вариантов).

"свою CMS легче расширять" - Опять же она должна быть для этого грамотно спроектирована,

"зачастую, самописная CMS изнутри являет собой такое г-но и по смыслу, и по стилю кодирования, и в плане безопасности, что хоть стой, хоть падай." - ЗОЛОТЫЕ СЛОВА

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

@Arni "Я получил огромный опыт в разработке" - Полностью согласен это РЕАЛЬНЫЙ (один единственный) ПЛЮС работы над своей CMS

Сразу прослеживается ярая ненависть к самописным CMS И восторгиние Wp, joomla, drupal. ИМХО вы написали как подросток максималист, у вас - все что wp, joomla, drupal белое а остальное - черное, каГбы еще серый цвет есть, не? И практически со всеми пунктами можно спорить и там по факту будет ваше слово против моего.
Вообще сам вопрос с холиварным контекстом ^^

1 В действительности я не против самописных CMS - главное чтобы они мне в работе над сайтами не попадались - а такие были и больше не хочется. Весь этот "подростковый максимализм" это опыт работы в web студии, а не теоретические рассуждения. 2 Я не восторгаюсь "Wp, joomla, drupal. ", они просто лучше самопала и сними проще заработать. 3 "каГбы еще серый цвет есть, не" Да есть, я о нем упоминул в пункте 8 своего ответа выше

Судя по вашему отзыву, вы не против самописных CMS, если они написаны грамотным программистом. Но вы наотрез отказываетесь работать с ними, чтобы не тратить времени на изучение. Тогда к вам два вопроса: 1. Как вы поступаете, если задача предполагает работу с известной системой, но с которой у вас опыта работы нет? 2. Как вы поступите, если система неизвестна, но открыта и с документацией? К слову, я не против пообщаться с вами в аське. Не дадите номер? =)

C неизвестной системой буду работать только если это интересно и предпологает работу сней в будущем либо на долгий срок. И конечно же изучу ее коли приспичит.

Жаль поднимать тему вверх, на раз откопал. >C неизвестной системой буду работать только если это интересно и >предпологает работу сней в будущем А если начальник сказал что нужно работать именно с ней, а желания нет? Вы уволитесь? Думаю нет! практически во всем соглашусь с @AlexWindHope.

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

В том случае, если готовая CMS не требует доводки-доделки, она выгоднее, чем самописная. Если же доводка требуется, то стоимость поддержки самописной может быть меньше, потому что не нужно 1) учить язык CMS, 2) разбираться в чужом коде, 3) разбираться в чужом окружении.

У самописной есть больше вероятность, что она будет более защищенная. Так как взломщик, не будет знать, с чем имеет дело. А в распространенных, не успела выйти, как нашли кучу дыр и выложили в интернете.

Хотя и самописную можно по ошибке или по незнанию дырявую сделать

До сих пор пишу свою CMS уже 3ю версию(5й год системе), но скорее всего 3я не выйдет по идейным соображениям, выйдет совершенно другая CMS основанная на совершенно другой структуре и разработана совершенно иначе.

На ней написано около 30-40 сайтов + скорее всего еще порядка 20-30, написано на ней же вторым разработчиком. так что меня показатель в 100 сайтов вполне устраивает,

В-пятых, фраза "на нашей CMS работает уже %n% сайтов" значительно повышает самооценку программиста/ов.

Своя CMS это как твой инструмент разработки, твой детище, твои грехи и мольбы о помощи. Кто не писал свой велосипед, то не поймет. Хочется охватить все и сразу, неа ничего не получится. Сразу и все только сыр в мышеловке.

Писать ей следует грамотно с хорошим подходом и документировано, а иначе грош цена системе, как в прямом так и в переносном смысле.

В данный момент "новая" система разрабатывается 3мя программистами. Отдельно структура и взаимодействие БД и таблиц в ней. Отдельно ПО.

Единственное что, пишется на всем известном PHP. Планируется перенести на другой язык. но это уже будущее еще на 2-3 года.

Изобретатели велосипедов? Интересно кто оплачивает такую работу - заказчики которые не в курсе что есть CMS в принципе?

Я, как автор сапописного сркипта (cms) хочу перечислить пару плюсов:

1) Скорость работы в разы выше (зависит от прямых рук автора cms)
2) Админка, если таковая имеется, радует глаз.
3) Легко писать модули
4) Автор ни от кого не зависит, то есть от обновления скрипта у разработчика
5) Интеграция с любым существующим форумом упрощается раза в 4.
6) Так как cms не используется в "широких кругах", то её исходный код неизвестен, а следовательно шансы, что её взломают, падают.

Ну а теперь минусы:
1-10) Минусов нет!


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

Рано или поздно захочется написать что-то хорошее, которое в будущем можно будет модифицировать и приспособить к новым условиям. Для самописки это не такая проблема. С распространенными дела обстоят иначе. В виду того, что иногда приходится перелопачивать все ядро, чтобы понять как, что и куда, желание остывает и пишется скоренький костыль (ну, или если упертость разработчика зашкаливает, дело доходит до финиша).

К антипреимуществам своей CMS можно отнести тот факт, что для распространенных CMS разрабатывается большое количество разнообразных модулей. Для своей же разрабатывается не такое большое количество модулей (да и, скорее всего, эти модули будут интегрироваться в ядро). Это связано либо с тем, что просто нет на это времени, либо фантазия ограничена насущными заботами. Как говорится: "Одна голова хорошо, а две - лучше".

Но несомненный плюс своей CMS - это "заточенность" под определенный сервис. Мало кто делает самописки универсальными.

Меня интересуется такая вещь, как создания сайта с нуля. В прямом смысле слова. В ПС ничего толкового не нашел, поскольку везде сайт с "нуля" предлагают создавать на готовых CMS. Конечно, обычный проекты я тоже делаю на СMS. Но для моей новой идеи это не подойдет, т.к. функционал, который мне нужен, как мне кажется, проще сделать самому, чем выбирать готовую CMS и вставлять туда. Поскольку знать php и прочее на хорошем уровне все равно нужно, то лучше учить и тренировать его параллельно с созданием какого-либо проекта, т.к. впустую читать всякие учебники - пустая трата времени.
Прошу подсказать необходимый набор программ, т.е. где писать сам сайт, где тестировать его, просматривать промежуточные результаты. Желательно, чтобы они были узконаправленные, т.е. создание сайта. Я знаю, что существуют среды, где все напичкано в одно, мне так не надо, только путаться буду =). Необходимо будет сказать, что я сижу через Linux. Но даже если варианты прог под винду, напишите тоже. Сумбурно как ты вышло, надеюсь, меня поняли)

Спасибо сказали:

Darkhoru, Для написания сайта подойдет любой текстовый редактор с подсветкой синтаксиса, я использую notepad++.
Для тестирования нужно будет установить веб-сервер на свой пк( для удобства). Если будете продолжать сидеть на никсах, то ставьте стандартную связку apache+php+sql( можно oracle, можно другие). Если для windows, то можно поставить просто denwer, но лучше apache+php+sql.
Работаете так: написали кусочек, скинули на сервер, загрузились, потыкали на кнопочки, продолжили писать сайт)

И не забывайте про бекапы, как только сделали более менее стабильный кусочек кода, сразу бекап)
Удачи в начинаниях

Darkhoru, В студенческие годы делал все сам както не знал про всякие там движки, использовал Дремвьювер на нем окно поделено на 2 части и удобно видть результат сразу, особенно при обучении
Ну и конечно denver и не забудь denver runnеr (это внеший интерфейс для денвера просто поудобней управлять)
Чтобы поднять хост у себя на компе

Берите новые технологии, вроде Python/Django. Зачем вам городить велосипеды на старом php? Когда можно писать красивый и понятный код на Python. Тем более, Linux отличный выбор для этого дела. Меньше проблем будет с установкой нужных пакетов и настройкой, чем в винде.

Читайте также: