Оговорюсь, что "самописной" чаще всего называют систему с довольно простым функционалом, плохо структурированную, соответственно, не совсем полноценную и годную к расширению. Из-за чего слово "самописная" приобрело несколько уничижительный оттенок.
В контексте данной статьи в качестве самописных CMS рассматриваются системы, разработанные "с нуля" как таковые. Насколько грамотно подобные CMS могут быть реализованы – это вопрос к квалификации программиста, а никак не к самому подходу в разработке web-ресурса в целом.
Часто на всевозможных форумах, где идёт речь о создании интернет-магазина, да и вообще любого сайта, подразумевающего наличие CMS (Content Management System – система управления контентом сайта) можно встретить мнение о том, что пользовательские (они же кастомные, они же самописные) CMS, то есть написанные самостоятельно, “с нуля” – зачем они, в общем-то, нужны? Если существует масса готовых CMS на рынке web-программирования – это и WordPress, и Joomla, и масса, масса других…
Отчасти данная мысль верна, но в некоторых отношениях и нет. Начнём с того, что абсолютных плюсов ни в каком, тем более в программном продукте, не бывает, а есть всё-таки как свои плюсы, так и свои минусы. Давайте конкретно проанализируем, какие же плюсы и минусы есть у любой готовой CMS.
1. Готовый продукт
Это самый главный безусловный плюс всех готовых CMS: не нужно ничего писать с нуля – всё уже написано за Вас. Вам нужно только взять это и использовать. То есть если стоит приоритетная задача очень быстро развернуть свой сайт: интернет-магазин, либо портал, либо что другое – неважно что именно – под любую задачу есть конкретные готовые CMS и это очень удобно: буквально несколько минут – и у Вас есть уже готовый шаблонный сайт. Хотя ради справедливости следует сказать: если за несколько минут, то Ваш сайт будет лишен уникальности – быстро используются дефолтные шаблоны или шаблоны из сети под данную CMS.
2. Простота и быстрота установки
Практически любая готовая CMS очень легко и быстро устанавливается. Вся установка заключается в том, что Вы заливаете файлы на сервер хостера, после этого запускаете файл инсталляции, где (чаще всего) вводите настройки Вашего сайта, а именно: настройки подключения к серверу Базы Данных, имя сервера, логин, пароль и т.д. И после это этого Ваш сайт готов, что называется, к употреблению. То есть CMS сама создаст необходимую БД, необходимые таблицы в этой БД, заполнит их какими-то тестовыми данными и, собственно, всё что Вам останется – приступить к наполнению данного сайта конкретным контентом.
3. Стремление к универсальности
Любое готовое решение (готовая CMS в данном случае) создают с прицелом на будущее. То есть туда, в любую готовую CMS стараются запихнуть как можно больше функционала с тем, чтобы с помощью этого функционала можно было решить как можно больше задач. Исключение составляют только целевые CMS, которые заточены под какое-то конкретное решение. Но в основной своей массе любая готовая CMS стремится к универсальности, то есть, повторюсь, её разработчики напихают её как можно большим количеством функционала с тем, чтобы можно было решить наибольшее количество задач.
4. Открытый исходный код
Тоже некоторый плюс , потому что если Вам нужно что-то доработать, то Вы, соответственно, можете с лёгкостью это сделать. Если изучите код данной CMS.
5. Документация
Безусловный плюс, особенно если документация мультиязычная. Документация подскажет, как использовать данную CMS.
Например, в том же WordPress просто шикарная документация: это и официальный сайт WordPress с его Кодексом, и всевозможные сообщества, и форумы в сети.
6. Обновления
Обновления (когда частые, когда не очень – смотря какая CMS) призваны привносить какое-либо новшество в CMS, либо закрывать дыры и уязвимости предыдущих версий.
7. Поддержка
Некоторые CMS предоставляют какую-то поддержку: или платную, или бесплатную. Есть CMS, распространяющие версии двух видов: бесплатная – с ограниченным функционалом и платная – с полным функционалом и, естественно, с поддержкой.
8. Дополнения.
Если существуют задачи, которые нельзя решить с помощью какой-то готовой CMS (несмотря на её универсальность – как бы разработчики к этой универсальности не стремились, чего-то да будет не хватать!), приходят на помощь дополнения в виде плагинов, позволяющих решить какую-то задачу. Также дополнения выпускают для закрытия дыр основной версии данной CMS.
1. 2. Что касается первых двух пунктов: Готовый продукт и Простота и быстрота установки то здесь, бесспорно, только плюсы.
3. Но вот Стремление к универсальности порождает, наверное, самый большой минус готовых CMS. Со стремлением к универсальности запихивание разработчиками как можно большего количества функционала в готовую CMS превращает эту CMS в эдакого большого неповоротливого монстра. То есть: чем универсальнее готовая CMS, тем медлительнее она будет. В реальности под выполение необходимых задач задействуется примерно 20% функционала готовой CMS – остальные 80 лежат мёртвым грузом.
Поэтому любая пользовательская (она же кастомная, она же самописная) CMS будет работать на порядок быстрее, чем какая-либо готовая CMS. Для забывших элементарную математику напомню: на порядок – это в 10 раз быстрее.
И, кстати, поисковики не любят медленные сайты. Яндекс и Google заботятся в первую очередь о том, чтобы сайты несли пользу людям. Поэтому, если страница быстро не загружается, то они считают, что она не нравится посетителям. А поскольку сайты, блоги, интернет-магазины на готовых движках медленными и являются (и никаким сверхбыстрым хостингом этого не перекрыть), то... Выводы делайте сами.
4. Открытый исходный код готовых CMS влечёт за собой следующую проблему: есть такая группа людей, называемых хакерами и вот этот самый открытый исходный код весьма способствует лёгкости взлома Вашего интернет-магазина. Конечно, когда какой-то компанией пишется готовая CMS, то, разумеется, стараются написать её без всяких уязвимостей, но, тем не менее, это не всегда получается. Ошибки бывают у всех, бывают всегда, их, конечно же, стараются оперативно закрывать выпуском новых версий, но… сами понимаете – идеального в природе ничего не существует и что сделано одним человеком, может быть понято и использовано в своих целях другим. Хакером в данном случае. Да, так вот этот самая открытость исходного кода у готовых CMS – одна из причин почему их проще взломать.
5. 6. 7. 8. Это всё здорово, за исключением того, что пользовательские CMS в этом как бы и не нуждаются. И насчет Дополнений можно сказать следующее: бывают качественные, а бывают и не очень качественные: со всеми теми же уязвимостями готовой CMS, касающимися открытости исходного кода. И, кстати, если Вы используете готовую CMS и дополнения к ней, то лучше скачивать их с официального сайта. Чем некоторые пренебрегают в силу того, что некоторые CMS платные.
Такая CMS пишется под конкретного заказчика, под конкретный проект, соответственно:
- только нужный функционал, ничего лишнего, соответственно: гораздо меньше весит при тех же функциях, быстрее грузится и быстрее работает.
- защита в любом случае лучше, чем у готовой CMS. Хакер не знает, как устроена конкретная самописная CMS изнутри, следовательно, должен будет действовать вслепую, что весьма и весьма затрудняет взлом.
- уникальность дизайна.
- пользовательская CMS легко расширяема.
Из минусов разработки проекта "с нуля" можно назвать следующее:
- если за расширение данного проекта возьмётся сторонний человек (не тот, кто её писал), то это будет немного проблематичнее, чем в случае с готовой CMS, потому что для начала ему придётся вникнуть в исходный код.
- разработка такого проекта стоит дороже.
Отдельным вопросом стоит разработка приложения с использованием какого-либо фреймворка или CMF вроде MODX. Конечно, и в этом случае можно превратить проект в нечто невообразимо неповоротливое ("талантов" хватает), тем не менее, использование фреймворка позволяет значительно снизить количество времени/усилий разработчика для достижения результата должного качества. Но это уже тема отдельной статьи...