Если у вас простой сайт, содержимое которого не будет изменяться, то вам, вероятно, следует написать его с помощью HTML и CSS, так как использование CMS (систем управления контентом) усложнит вам задачу.
Напротив, если контент вашего сайта будет периодически, добавляться, обновляться и удаляться, в том числе посетителями вашего сайта, — вам вряд ли обойтись без CMS.
И здесь у вас два пути:
- написать CMS самостоятельно или заказать ее написание;
- выбрать готовую CMS.
Писать с нуля собственную CMS — вряд ли будет разумно. Даже крупные IT-компании часто не изобретают велосипед и используют готовые CMS, или веб-фреймворки.
Скорее всего вы пойдете вторым, более легким и разумным путем и приступите к выбору CMS, возможно, долгому и мучительному...
Чтобы она вам понравилась, она должна удовлетворять списку важных для вас критериев. Таких, например, как надежность, гибкость, безопасность, удобство администрирования, скорость освоения, возможность расширения функционала и т. д.
О многих из этих критериев вы уже знаете или можете узнать в интернете. Я же сегодня хочу поговорить лишь об одном из них. Он очень важен. От него зависит эффективность вашей работы, а возможно и весь успех вашего предприятия.
Для многих этот критерий неочевиден, но вы можете отвергнуть многие CMS, потому что они не удовлетворяют этому критерию. Причем, возможно, вы даже не сможете четко сформулировать причины, по которым конкретная CMS вас не устраивает.
Итак, ближе к делу. Трудно не согласиться что использование CMS — это привнесение сложности в проект. Обслуживание CMS — это накладные расходы или, иначе говоря, себестоимость управления контентом. А себестоимость дожна быть низкой, так как не является самоцелью. CMS должна помогать, а не висеть пудовой гирей на шее, тормозя вашу работу и отнимая время.
Исходя из вышесказанного, при ознакомлении с очередной системой управления контентом, обязательно следует задать вопросы: "Не несет ли эта CMS в себе лишнюю сложность?", "Как CMS позволяет управлять сложностью?
Теперь, я хочу познакомить вас с возможным кандидатом, на роль вашего решения в этом вопросе — системой управления контентом, написанной на популярном языке программирования python, которая называется Wagtail. Также, вы узнаете, как задача управления сложностью решается в этой CMS.
Разделяй и властвуй. Основные способы управления сложностью в CMS Wagtail
1.Разделение кода
Wagtail - является приложением фреймворка Django. Имея в своем базовом варианте минимально необходимые модули для типового сайта, она может быть расширена тысячами модулей, доступных для Django в хранилище PyPI.
Здесь важно именно то, что разделение кода на модули, позволяет наращивать сложность, лишь по мере необходимости или не наращивать ее вовсе. Даже активированные по умолчанию модули, легко отключить в файле конфигурации. На карьерном самосвале не ездят за плюшкой в булочную.
Также, следуя современным стандартам для подобных программных продуктов, код, отвечающий за обработку запросов, модель данных и их обработку отделен от кода шаблонов представления информации.
Таким образом, в вашем проекте не будет неиспользуемого функционала, а имеющийся будет разделен по частям, каждая из которых будет выполнять свою узкую и конкретную задачу.
2. Разделение труда
Благодаря разделению труда его производительность может вырасти многократно. Благодаря появлению профессий и специализации была в короткий срок, по сравнению с общим временем существования человека, создана наша цивилизация.
В CMS Wagtail задачи автора контента, администратора сайта, программиста и дизайнера разделены. Отличительной особенностью этой CMS является то, что те задачи, которые лучшим образом можно решить только путем написания кода python, отдаются на решение программисту.
Автору текста, соответственно, не нужно дозволять изменять внешний вид и стиль страницы, заданный дизайнером. И т. д. Таким образом достигается разделение труда, снижается сложность работы и повышается её эффективность.
Важной особенностью Wagtail, является больший контроль над семантикой контента. Программист может создать блоки, которые могут описывая, какой-либо типовой объект, содержать различные типы полей. Дизайнер может создать для них шаблон и эти блоки могут быть многократно использованы автором для семантической организации материала в разных местах сайта. Также, эти блоки могут быть бесконечно вложены друг в друга, составляя иерархическую систему. В итоге мы получаем экономию времени, однообразие представления однотипных объектов, четкую организацию контента и возможность избирательного поиска по отдельным полям.
Выводы:
Если вы начинаете серьезный проект, вам не обойтись без специалистов. Если вы выберете Wagtail, не забудьте включить программиста в свою команду. Работа с графическим интерфейсом CMS может решить множество задач, кроме задачи программирования. Таким образом ваша CMS может быть гибкой и остаться относительно легковесной и не перегруженной лишними модулями.