Еще одна коробочная CMS — знакомство с FFCMS

    FFCMS logo Добрый день, читатели и авторы habrahabr! Сегодня я хочу рассказать вам о еще одной небольшой коробочной системе управления содержимым сайта FFCMS, разработкой которой (ранее — для собственных проектов, а теперь и для всего сообщества) я занимаюсь чуть более года. В данной статье я хочу кратко рассказать о том, что умеет данная система, кратко коснуться освещения возможностей основных интерфейсов системы и немного рассказать о технических деталях.

    Дисклеймер: я не претендую на звание разработчика «инновационной системы» и я ничего не продаю, а лишь хочу представить открытую систему управления сайтом, которая возможно упростит жизнь разработчику и веб-мастеру. Система не основана на каком-либо популярном фреймворке — реализованы лишь минимальные методы для взаимодействия между расширениями, роутингом и шаблонными представлениями.

    1. Что это за система?


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

    FFCMS (от англ. «Fast flexibility content management system») — быстрая, расширяемая система управления содержимым сайта, написанная на php с использованием баз данных сервера mysql. При разработке данной системы я ставил себе несколько условий:

    1. Быстрота работы и низкое потребление ресурсов — данный вопрос зачастую является самым сложным: приходиться выбирать между удобством разработки, избыточностью кода и скоростью работы конечного приложения. Много раз я задавал себе вопрос — может следует взять symphony и отказаться от необходимости реализации логики работы и вспомогательных методов? В итоге я остановился на модели простейших реализаций с использованием паттерна singleton (что конечно не всегда уместно, но всегда просто).
    2. Возможность быстрого прототипирования интерфейсов — здесь решением стало использование шаблонизатора twig и знакомого большинству bootstrap CSS фреймворка.
    3. Возможность быстрого расширения функциональных возможностей — было принято разделить логику взаимодействия на 3 основных типа расширений: компоненты, модули и хуки, о которых кратко я расскажу ниже.
    4. Возможность ведения мультиязычных версий сайта (расширенная мультизычность из коробки) — данный вопрос особо актуален в наше время, когда возникает необходимость доносить информацию с сайта на нескольких языках: будь то сайт компании, предоставляющей услуги или товары, или информационное агентство, транслирующее информацию на нескольких языках.

    Для работы с базой данных была выбрана стандартная возможность php — PHP::PDO с отключенными EMULATE_PREPARES для обеспечения безопасности sql-запросов. В качестве стандартных визуальных редакторов системы используются CKeditor (html) и wysibb (bbcode). Версификацию обновлений системы на определенных стадиях разработки я решил классифицировать в соответствии со спецификацией SemVer (major.minor.path).

    2. Интерфейсы системы


    При реализации различных моделей взаимодействия пользователя и сайта было принято решение разделить все интерфейсы системы на 4 основных типа в зависимости от источника взаимодействия и назначения выполняемых операций. Так появились: интерфейс пользователя, интерфейс установщика системы, интерфейс администратора и интерфейс API приложений.

    Интерфейс пользователя


    Данный интерфейс предоставляет реализации для взаимодействия между пользователем и собственно алгоритмами сайта. Все пользовательские запросы к сайту будут обработаны именно в рамках пользовательского интерфейса(за исключением AJAX взаимодействия — в данном случае будет использоваться интерфейс api).

    После стандартной установки данный интерфейс выглядит следующим образом:



    Интерфейс администратора


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



    Интерфейс установщика и API


    Интерфейс установщика предоставляет возможности упрощенной установки системы на ваше оборудование. Так же в данном интерфейсе реализованы возможности обновления системы со старых до более новых версий системы.
    В свою очередь интерфейс API не имеет шаблонной реализации — его задача это реализация некого подобия на REST API. Основной целью данного интерфейса является обработка запросов и по мере востребованности возвращение результата обработки — хорошим примером является AJAX взаимодействие.

    3. Расширения системы


    Как я уже ранее отмечал, все расширения системы представлены 3мя основными типами, однако общее количество типов реализаций — 5, среди которых:

    • Компоненты — генерация содержимого сайта в зависимости от внутреннего URI запроса.
    • Модули — работа с шаблонными позициями.
    • Хуки — реализация методов взаимодействия между расширениями системы, сторонним кодом и сервисами.
    • ApiCallback — реализация простых REST API для взаимодействия внутри и вне системы при использовании системного интерфейса API.
    • Cron — реализация дополнений к расширениям, позволяющие выполнять задания по расписанию (Cron task).

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

    Данные о расширениях в системе хранятся в специальной таблице в базе данных (_extensions), в которой обозначены: тип расширения, директория реализации, конфигурации, версия, совместимость а так же информация о правилах путей работы данного расширения (исключительно для модулей — роутинг компонента ведется в зависимости от названия директории реализации).

    Компоненты, модули и хуки могут содержать 2 набора реализаций:

    • front: логика работы расширения для интерфейса пользователя
    • back: логика работы расширения для интерфейса администратора(управление содержимым, настройки, прочее)

    * Хочется отметить — я понимаю, что зачастую для программиста понятия «front» и «back» чаще ассоциируются с областью выполнения приложения (клиент или сервер), однако в данном случае данные значения классифицируют целевой интерфейс взаимодействия внутри системы.

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

    4. Небольшая презентация


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



    5. Ссылки и послесловие


    В первую очередь хотелось бы поблагодарить команду habrahabr за поддержку столь малозначимого (по масштабам) проекта одного разработчика и одобрение участия в программе помощи стартап-ам.

    Официальный сайт проекта: ffcms.ru (прощу прощения за качество английской версии сайта).

    Проект на github: git@github.com:zenn1989/ffcms.git.

    Каталог расширений: каталог ffcms (буду рад вашему участию).

    Немного о себе и «от себя»: зовут меня Пятинский Михаил, я являюсь жителем скромного города Керчь (Крым). К сожалению, не имею высшего образования, связанного с программированием. В нашем городе серьезно программированием занимаются единицы, а веб-разработкой и подавно (мне неизвестна ни одна веб-студия в нашем городе), поэтому большинство опыта разработки (в том числе какой-никакой командной) я получил в виртуальной среде (удаленная разработка). Я понимаю, что мой код и его качество очень далеки от идеала и я не в коем случае не ставлю его в уровень с yii, symphony или другими замечательными CMF фреймворками, однако именно вы можете поучаствовать в разработке и улучшить проект и качество его кода. Я всегда открыт к диалогу.
    FFCMS
    0.00
    Теперь FFCMS 3 с MVC, composer, AR!
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 77

      +3
      Немного не в тему, просто интересно, почему «коробочная»? Для меня «коробочная» подразумевает, что продукт можно получить почтой, с диском, лицензией, доками, etc… — в общем для этого и нужна картонная коробка.
        +8
        Старый термин. Сейчас это продукт, который не требует доработки напильником. Поставил, настроил через админку — работает.

        Сам продукт не ставил, лишь посмотрел код, и он мне не понравился: как будто вернулся в те времена, когда ПО распространяли как раз в коробках CD и на дискетах.
        Поддерживать его, писать под него плагины будет очень сложно и неприятно: много хардкода, отсутсвие композера, проигнорированы все best practices.
          +3
          На счет comproser — соглашусь с вами, возможно это достаточно серьезное упущение. Насчет best practices не совсем соглашусь — пытался следовать тем, о которых читал для данного языка. Существует достаточно много публикаций о best practices с достаточно расходящимися мнениями. Благодарю за рекомендации.
            +2
            почитайте о SOLID
              +5
              Я просто оставлю это здесь: github.com/zenn1989/ffcms/blob/master/extensions/components/news/front.php
              Правда считаете, что этот код читаем, изящен и прост в поддержке?
                +3
                через пару месяцев там сам автор «ногу сломит»)
                  +6
                  // Когда я начинал это писать, только Бог и я понимали, что я делаю
                  // Сейчас остался только Бог


                  habrahabr.ru/post/191772/
                  +2
                  Меня смутило название классов с маленькой буквы.
                    +2
                    Ну насколько мне известно есть несколько устоявшихся «практик» именования переменных и классов, среди которых CamelCase и unser_score
                      +3
                      Но конкретно тут все перемешано. Используются пространства имен engine\template вместо хотя бы ffcms\engine\template или еще лучше ffcms\templating… Короче толку от пространства имен без имени вендора… Да и где-то они юзаются, где-то нет…
                        –2
                        Я бы сказал так — практически у каждого языка программирования сейчас устоявшейся является одна из этих практик. Для PHP — это был и есть CamelCase.
                          +1
                          Про PSR вы не слышали, конечно?
                          github.com/php-fig/fig-standards/tree/master/accepted
                            +1
                            Ниже уже ребята подсказали, обязательно стандартизирую в будущих обновлениях.
                        +1
                        Почитал. Первые строки вселили надежду, что дальше будет опрятный ООП-код с небольшой примесью мусора. Но уже начиная с метода viewUsereditNews код стал напоминать ту «процедурную» лапшу, которой я занимаюсь на работе.
                        +3
                        пытался следовать тем, о которых читал для данного языка

                        www.phptherightway.com/
                      +1
                      это метафора, например есть framework symfony и в комплекте(в коробки) с ним идет шаблонизатор twig, orm doctrine, ну и куча другого.
                      а вот например SonataAdminBundle нужно вручную доставлять если нужно.

                      в данном случае автор говорит что все модули для этой cms идут в комплекте с ней.
                        +2
                        Под «коробочная CMS» понималось то, что в стандартном представлении вместе с голой реализацией идет поставка ряда «расширений» (компонентов, модулей и хуков), хотя действительно, данный термин возможно устарел.
                      +1
                      вы добавили модуль миграций, могу по опыту сказать, что без него сложно переносить базу, особенно когда роутинг в БД храниться или настройки раздела..., на тестовой машине настраиваешь и потом чтобы задеплоить начинаются проблемы, особенно если кейс бальшой был.
                        +4
                        getInstance() занимает 80% кода, не сдавайтесь, есть и гораздо хуже, пусть господа критики битрикс посмотрят
                          –2
                          Ну насчет 80% я бы поспорил, но действительно достаточно много, но такой вызов гарантирует единую точку вызова объекта.
                            +7
                            он гарантирует рябь в глазах, не более
                              +1
                              Единую точку вызова может гарантировать dependency injection, а не singleton. Ваш стиль — это жесть какая-то (
                              +6
                              Если качество кода ужасно, но у кого-то еще оно хуже, то уже нельзя критиковать по этому параметру? Почему?
                                0
                                Вы правы, конструктивная критика всегда к месту, вне зависимости от сравнения, да и в стране у нас ведь демократия и свобода слова.
                                  0
                                  я за любой опенсорс, какой бы он не был, сегодня код ужасен, а завтра его может перепишут, но он останется свободным
                                    +1
                                    С таким же успехом могут переписать и закрытый продукт под свободной лицензией.
                                    А вот новичков такой код может смутить, и лучше бы им его не видеть.
                                      0
                                      загляните в джумлу или еще в какой ад, но никто ни разу не смущается, пишут как умеют.
                                        +1
                                        А вы сами загляните в джумлу и посмотрите код повнимательнее. Там код не идеален мягко говоря, но вполне вменяем, и лучше этого на порядки.
                                          0
                                          значит у каждого свой взгляд на вменяемость.
                                            0
                                            Само ядро Joomla в принципе неплохо… А вот расширения — это ад. Там много чего тупо для обратной совместимости, но в целом там есть все что бы разработчики расширений писали качественные продукты… но почему-то никто не парится.
                                              +1
                                              и вы не парьтесь
                                            +1
                                            человек один написал весьма законченный продукт, это стоит гораздо больше чем какой то код, попадет в хорошие руки и перейдет на следующий левел.
                                  0
                                  Хабраэффект? Интересно что именно проседает.
                                    +1
                                    Нет, к сожалению привет ребятам из infobox. VPS спокойно выдерживает до 2к одновременных посещений (на 1 из ведомых мной ресурсов).
                                    +2
                                    Я думаю, что за год работы вы и так приобрели бесценный опыт. Но я бы посоветовал вам поучаствовать в известных open-source проектах. Так вы увидите как люди пишут код, какие приняты конвенции в том или ином языке. Думаю на Гитхабе полно таких проектов, написанных на PHP. Кроме того вы научитесь писать тесты, т.к. в вашем проекте я тестов не увидел.
                                      +6
                                      Компоненты, модули, блоки, хуки, расширения, виджеты, плагины, аддоны — каждый писатель CMS должен обязательно назвать все имеющиеся у него сущности любым из слов из этого набора. Иначе какая же это CMS. При том, у каждого все эти термины имеют свой смысл.
                                        +2
                                        Очень много неудобств у вас в CMS. Почему, например, ни один checkbox не обернут в label? Приходится целиться мышкой в квадратик. Почему главное меню всегда сворачивается обратно, всегда приходится два раза тыкать. Почему система пишет жирным шрифтом, что менять url очень плохо? Как я понял, нет механизма работы с неизменными id, типа того что в modx есть. Ну да, компонента меню ведь тоже нет. Оно у вас в дефолтном шаблоне захардкожено.
                                        Короче, успехов в дальнейшем допиливании. Сейчас ее нельзя назвать дружественной конечному пользователю.
                                          +1
                                          Спасибо за конструктив, все по факту, постараюсь исправить.
                                            0
                                            Так же добавлю что использовать радиобаттон для вкл/выкл куда удобрее чем селект, все таки один клик. И подключение к базе данных может лучше перенести в файл? Не даром же так делают популярные CMS
                                              0
                                              Да, насчет «переключателя» конфигураций «да/нет» я уже задумывался, возможно будет внедрено. Подключение к базе данных итак находиться в файле, как и все стандартные настройки, просто конфигурация выведена в панельку.
                                          +1
                                          Добавьте в свою IDE и описание проекта какой-то формат кодирования кода (PSR-0) и привидите весь код в 1 формат. Там будет проще и вам и участникам проекта.
                                          • UFO just landed and posted this here
                                              0
                                              Позвольте с вами не согласиться — он был сделан уж далеко не первым.
                                              –3
                                              Пара замечаний автору на будущее:

                                              1. Лучше всего ориентироваться на версию PHP 5.2.x. Не все хостинги перешли ещё на 5.3 и тем паче на то, что выше (и, боюсь, не скоро перейдут; типичный тому пример — один из лучших российских хостингов под название SpaceWeb). Ваш код, слава богам, если будет работать хотя бы с версией 5.3.

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

                                              3. Не пытайтесь впихнуть всё в один класс. В своё время разработчики MODx Evolution сделали по сути один базовый класс в движке (documentParser, ЕМНИП) и засунули почти весь функционал туда. В результате код этого класса при всей читабельности сложен даже для простого рефакторинга. Очень хорошо распределять задачи по компонентам. Скажем, есть корневой компонент, в котором дочерними являются DB API, шаблонизатор и мейлер. Это позволяет в дальнейшем комбинировать разные компоненты друг с другом, а — самое главное — модифицировать тот или иной функционал, не затрагивая прочий код.

                                              4. Старайтесь использовать нотацию phpDoc. Это позволит работать с Вашим проектом другим разработчикам и существенно повысит читабельность кода.

                                              Ну и, если что, пишите в ЛС, попробую помочь советом, если потребуется =)
                                                0
                                                Действительно, сделать проект совместимым с 5.2 будет непросто, хоть и возможности пространства имен я использую достаточно косвенно да и поздним статическим связыванием не увлекался, но бывали моменты использования сокращенного тернарного оператора (вроде бы убрал все в итоге) и некоторых новых возможностей фу-ий (к примеру strstr с параметром before_needle). Все сейчас вроде бы так или иначе стремятся к новым версиям php, тем более в более новых появилась базовая поддержка ряда практичных возможностей(сокращенные представления массивов, трейты, обработчики try-catch-finaly, поддержка opcache из коробки и т.д.).
                                                С остальным — согласен с вами, благодарю за фидбэк.
                                                  –6
                                                  > Все сейчас вроде бы так или иначе стремятся к новым версиям php

                                                  Версия 5.2.x — ИМХО, «золотая» версия PHP. Всё, что выше — это уже немного излишне. Вот сейчас, например, реализуют в PHP тот же принцип, что и в JavaScript — почти всё является объектом — и будет разработчикам «шасье». Сдаётся мне, что производительность резко упадёт. По той же причине я, например, не использую (о, ужас! щаз запинают на раз) PDO, ибо код не только сильно теряет в лаконичности, но и заметно в производительности. Да, PDO — это, конечно, универсально. Только мне всё ж милее старый проверенный годами зоопарк мартышек — mysql, pg, mssql, msql, etc. В своё время я даже исхитрился написать под них универсальный провайдер, в котором тип БД определялся лишь одним строковым параметром инициализации, а методы класса всегда были одними и теми же, даже маппинг типов был для совместимости.

                                                  Я сам в своё время писал CMS от мала до велика. В итоге на долгое время пришёл к использованию MODx Evo. Какое-то время даже занимался рефакторингом этой системы (планирую вернуться таки к этой затее). Только когда столкнулся с высоконагруженными проектами, вернулся к старым практикам. Ныне я стараюсь сочетать самые лаконичные методики с процедурным программированием в SQL, чего и Вам советую. Сие сочетание даёт потрясающие результаты.
                                                    +4
                                                    сделать проект совместимым с 5.2

                                                    Зачем? Сейчас минимально-поддерживаемая версия PHP — 5,4. Какой смысл отказываться от тех плюшек, которые дают разработчику новые версии PHP? Забудьте о 5,2 и начинайте забывать о 5,3.

                                                    Я не вижу вообще никакой проблемы в том что бы проект был хоть на 5,6. Хостинг под 5,6 найти не проблема, да и VPS стоят копейки нынче. Так же разработчик этой самое CMS сможет в будущем сделать платную поддержку возможно (мечты конечно но все же) и сделать свою CMS облачной и за счет этого жить и развивать продукт.
                                                      –4
                                                      > Хостинг под 5,6 найти не проблема

                                                      В России? Ню-ню. Милейший, а где взаимосвязь между возможностью сделать CMS облачной и версией PHP?
                                                        0
                                                        Извините, а что собственно понимается под «облачной CMS» — разделение модели взаимодействия на front и back энд-ы?
                                                          –1
                                                          Грубо говоря, основная масса файлов движка берётся из некоего репозитория (облака), а под каждый проект выделяется некий набор таблиц в БД, который, собственно, и отделяет проекты друг от друга. Ну, вот так как-то.
                                                            0
                                                            Я имел в виду Software as a service, по сути лизинг програмного обеспечения. Разворачивается все на серверах разработчика продукта, клиенту ничего для этого делать не нужно. Аля «специализированный хостинг». Пример — wordpress — вы можете установить себе, а можете просто зарегистрировать аккаунт.
                                                            +1
                                                            Версия PHP — чем выше, тем удобнее разработчику. Облачность — всем управляет разработчик. Клиенты просто регают акаунты, им создается инстанс, они привязывают домен и радуются. Не нужно ни за обновления волноваться, ни за настройки сервера и т.д.

                                                            по поводу 5,6 я всего лишь сказал что хостинги есть.

                                                            nic.ru — php5.3
                                                            hostland.ru — php5.3
                                                            hts.ru — php5.4
                                                            timeweb.com — php5.5
                                                            jino.ru — php5.5
                                                            sprinthost.ru — php5.5

                                                            Так что про php5.2 можно уже забыть.
                                                              –4
                                                              Разработчику-то удобнее, вот только производительность PHP и, соответственно, систем на его основе падает… Хотя что я тут распинаюсь? Ведь вычислительные мощности растут, аки на дрожжах. Чего мелочиться-то, правда? Есть, правда, ещё один момент, чем удобнее разработчику, тем больше становится процент дилетантов среди разработчиков. Освоили очередной фреймворк для создания веб-приложения в десять строчек и погнали штамповать десятками шаблонные поделки. А где созидательность? *махнул рукой* А, ладно, анекдот в тему оставлю:

                                                              — Контрабас, сыграйте «до»
                                                              * бряк! *
                                                              — Контрабас, сыграйте «ре»
                                                              * бряк! *
                                                              — А, ладно, играйте, что хотите!
                                                                +2
                                                                вот только производительность PHP и, соответственно, систем на его основе падает…

                                                                Вы возможно удивитесь, но PHP5,5+opcache порядочно так быстрее php5.2+apc. То есть если вы просто обновите версию PHP не меняя кодобазу производительность улучшится.

                                                                Если вы про все этим модные пространства имен, composer, dependency injection-ы и другие модные штуки, кеширование спасет мир. Большинство готовых решений и так достаточно эффективны и поддерживают кеширование. Тот же composer позволяет нам выполнить команду
                                                                composer dump-audoload --optimized
                                                                

                                                                и при наличии opcache-ов вы получите такую производительность, которую вам не даст ни один вася пупкин на php5.2. И при этом система все еще будет поддерживаемой и внесение изменений будет не такой болью. Так же можно децентролизовать проект.

                                                                А что я говорю… Мне кажется мы просто в разных мирах сидим… Мне кажется что если инструмент и замедляет производительность на каких 10%-20% но повышает продуктивность разработчика на 40%-50% то оно того стоит (если мы не говорим о проектах где эти 10%-20% это +200 серверов в датацентрах) Но посколько подобные проекты аля коробочных CMS никогда не выйдут на такие масштабы, то лучше уж так. И опять же проблемы производительности частенько решаются архитекрурно и в таких вот CMS-ках узкое место зачастую неэффективное использование баз данных.
                                                                  0
                                                                  Вообще, вопрос о «уровне оптимизации» и «удобстве разработки» извечен. Соглашусь, что при условии неизменности самого кода(и при отсутствии depricated методов в коде в том числе) при моем «беглом» тестировании php 5.5 с opcache показал лучший результат чем php 5.3 с установленным apc или eaccelerator. Притом внедрение opcache в 5.5 версии предоставляется по существу из «коробки» без необходимости сборки их исходных кодов или скачивания готовых библиотек с удаленных репозиториев/хранилищ.
                                                      +3
                                                      (тут начинаем пинать) я около 12 лет назад поставил одну бесплатную CMS (платные тоже пробовал, но не понравилось, исходники закрыты поправить нет возможности), так вот когда я на их форуме попросил исправить очень серьезные баг которые очень сильно всем мешал, мне толпа активистов «заминусовало», и сказали если не нравиться пиши свою CMS. Я как инициативный бородатый программер взял и написал за пару месяцев. Модульная, MVC модель, хуки, кучу примочек, визуальны генератор дизайна. И вот уже 12 лет она работает на нескольких сотнях моих сайтов, я ее изредко поправляю, она без Аякса. Работает корректно на всех браузерах. И когда я вижу все текущие CMS я понимаю что лучше они не стали. Моя CMS в базовой установке занимает 1 мегабайт, работает со скоростью света, визуальный редактор и все такое стоит.
                                                      И еще раз я прихожу к выводу — ХОТИТЕ чтобы ВСЕ работало хорошо — делайте САМИ.

                                                      PS: недавно проводил тест сайтов в инете(около 1 000 000 тестил), так вот каждый 1000 сайт на стандартной(коробочной) CMS взламывается без особого труда.
                                                        0
                                                        Это хорошо, что ваша система работает столько лет без проблем и изъянов в безопасности приложения. Я буду благодарен вам, если вы найдете и предоставите мне изъяны в безопасности выше опубликованной системы.
                                                          +1
                                                          Я не вижу в Вашей скрытой рекламе чем Ваша система лучше все тех что существуют, ни объективных графиков нагрузки, ни каких то особоых фишечек преимуществ, такой же «смартфон» как и у всех что тут рекламируют. Показали бы 10-20 принскринов реально работающих сайтов.

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

                                                          ЗЫ: Могу отвечать только раз в час, а то меня рекламщики минусуют за честные комментарии, Господи во что хабр превратился.
                                                          (и тут начинаем минусовать)
                                                            +1
                                                            Если по делу — никакой здесь скрытой рекламы нет, ведь пост написан в блог компании, что не нарушает правил хабра. Да, это не разговор о каких-либо высоких достижениях или принципиально новой технологии.
                                                            Интересует стабильность работы под нагрузками в сравнении с другими системами? Замечательно, я постараюсь сделать следующий пост в блоге именно об этом — проведу сравнительное ab-тестирование с популярными, по моему мнению CMS.
                                                            З.ы. — именно вы выше, по моему мнению занимались скрытой рекламой, расхваливая свою систему — но это ваше право.
                                                              0
                                                              Я свою систему не распространяю, поэтому это не реклама.
                                                              Не нарушаете, Харб специально сделал раздел Блог компаний, извените, не скрытая реклама, а просто реклама.

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

                                                                Это работа всего лишь 1го человека, я выше об этом не раз писал, притом человека, связанного с программированием по средствам самообучения. Постараюсь удовлетворить ваше требование и напишу статью о преимуществах (или недостатках) в зависимости от нагрузок.
                                                                  0
                                                                  Как и обещал вам — habrahabr.ru/company/ffcms/blog/240829/
                                                            +2
                                                            (тут начинаем пинать) я около 12 лет назад поставил одну бесплатную CMS (платные тоже пробовал, но не понравилось, исходники закрыты поправить нет возможности), так вот когда я на их форуме попросил исправить очень серьезные баг которые очень сильно всем мешал, мне толпа активистов «заминусовало», и сказали если не нравиться пиши свою CMS.

                                                            12 лет назад. PHP комьюнити 12 лет назад было дикарями. Сейчас если вы нашли баг вам нужно сделать ишус в трекере всего-то или, что еще лучше, подготовить pull-request.

                                                            Модульная, MVC модель, хуки

                                                            Ой да каждый писал свою CMS, модульную, с MVC, возможно даже с SOA и т.д. А толку то? Если вы ее не распространяете нигде, смысл кричат об этом? 99% что там внутри такой трешачек что wordpress будет еще норм.

                                                            так вот каждый 1000 сайт на стандартной(коробочной) CMS взламывается без особого труда.

                                                            Ого, всего-то 0,01%? Неплохо для коробочных CMS. На самом деле статистика будет куда плачевнее и тут ничего не сделать.

                                                            Очередная CMS это и не плохо и не хорошо. Это никак. Вообще никак. Если ваше решение работает для вас, то это не значит что оно будет работать для кого-то еще. Еще и специфика проектов может отличаться. Меня вот больше печалит что за последние лет 10 не особо чего поменялось в концепции CMS. Да, сейчас начали появляться проекты с inline-редактированием, блочными моделями сборки страниц и т.д. Но можно же и более интересные/концептуальные подходы понапридумывать, с компиляцией и сборкой. оптимизациями запросов в базу, генерация CMS на основе шаблона… что-то меня понесло…
                                                              0
                                                              «Ой да каждый писал свою CMS, модульную, с MVC, возможно даже с SOA и т.д. А толку то? Если вы ее не распространяете нигде, смысл кричат об этом? 99% что там внутри такой трешачек что wordpress будет еще норм.»
                                                              Согласен, но я писал для себя, для своих проектов и эти проекты успешно работают 12 лет, и это не задумка а трешь коде а нормальный релизный проект — вот в чем разница от 98% тех кто писал свою CMS

                                                              «Но можно же и более интересные/концептуальные подходы понапридумывать, с компиляцией и сборкой. оптимизациями запросов в базу, генерация CMS на основе шаблона… что-то меня понесло…»

                                                              Вот об это я и говорю. Я зашел на эту страницу, думая что кто то, что то сделал оригинальное, стоящего внимания, НОВОЕ.

                                                              Ps: BB коды не работаю для комментов — что за…
                                                              Последнее врем Харб превращается в рекламу(как ни назовите, но именно рекламу) «смартфонов» из статей Блогов компаний.
                                                                0
                                                                А вот эту не пробовали. Есть интересные идеи www.seotoaster.com/
                                                                  0
                                                                  Реализация отвратна. И да, ничего интересного. Просто куски админки вызываются с фронтэнда в попапчике. Лучше уж redkite какой. В прочем у меня свои требования для CMS. И да, у меня не так много проектов такого плана.
                                                              0
                                                              del
                                                                0
                                                                Firefox: wysibb не работает кнопка «Выберите файл для загрузки»
                                                                  0
                                                                  Потестировал на локалке — все хорошо (возможно вы пытались это проделать на демо-сайте, там отключена загрузка файлов из-за понятных соображений).
                                                                    0
                                                                    Логично. Кстати на хабре была статья насчет того, что давать заливать файлы пользователям на сервер не безопасно, причем не по «вине» cms, а по вине хостера и его настроек сервера
                                                                  +1
                                                                  Я почти прошел мимо, но увидел в качестве преимуществ этой цмс её скорость работы, среди прочих тестируемых были и ВП и инстант и ливстрит и др. Так вот, конечно с учетом возможностей вашей цмс её не очень-то можно сравнивать с теми цмс, что в вашем списке — у них более серьезные возможности, другая архитектура.

                                                                  Также как я понял ни о какой динамичности для не зарегистрированного пользователя в течении 2-х минут (по-умолчанию) говорить не приходится — им отдается что-то вроде готового хтмл.

                                                                  Это напоминает какой-то плохой маркетинг — выделить какие-то преимущества на полном утаивании недостатков или отсутствия чего-либо ещё.

                                                                  Хотя я понимаю что «как-то же выделять свое творение надо».

                                                                  Код не смотрел (только первые два экрана какого-то файла), мало комментариев.

                                                                  P.S. либо писать не «Основные преимущества системы», а «основные возможности».
                                                                    0
                                                                    Кеширование из коробки это несомненно плюс. Мне вот пришлось перед wordpress Varnish поставить когда в последний раз с ним сталкивался, что бы все работало быстро. Сейчас же я предпочел бы сделать тот проект на каком piecrust или sculpin (если говорить про нынешние дни).

                                                                    И что плохого в маркетинге и рекламе своего продукта? Если его не рекламировать, он умрет в безвестности. А так, чем больше людей услышит о продукте, тем больше потенциальных пользователей а так же идей по улучшению продукта.
                                                                      0
                                                                      А я не где и не говорил в материале о преимуществах системы, в данном посте я больше говорил об ее устройстве и потенциальных возможностях, нежели сравнивал ее с популярными системами.
                                                                      Если речь идет об описании на сайте — то там я старался изложить все по делу и я бы не сказал что функционал системы(из «коробки») существенно ниже, чем у wordpress или dle (у livestreet иная направленность — мульти-блоги).
                                                                      А о динамичности вы зря заговорили, не посмотрев саму систему и не потестировав ее. Вся соль в том, что «статичным» становиться скомпилированный код шаблона (спасибо за это twig) а все остальное — нет (динамические включения модулей или компонентов в тело страницы).
                                                                      0
                                                                      Как совет: сейчас бурно развивается oн-лайн торговля, разного рода cms очень много, поэтому лучше (имхо) сделать платформу для интернет-магазинов, на базе вашей cms
                                                                        0
                                                                        Дело в том, что реализовать функционал магазина в системе можно без единой строки изменения в ее коде — сам магазин реализовать компонентом, вывод на главную(к примеру) или в блоки шаблона — модулем(callback-ами в готовые методы компонента), корзину — модулем(если нужно взаимодействие с api доставщиков — хук и вызов его методов модулем).
                                                                        В ближайшее время после правки ряда выше заявленных недоработок(возможно, до внедрения стандарта PSR-1) я постараюсь реализовать данный механизм и опубликовать его в каталоге системы.
                                                                          0
                                                                          Это очень хорошо, что вы позаботились об архитектуре ПО на начальном этапе, а не погнались за «рюшечками»
                                                                        0
                                                                        Наверное, хорошая система, но мой совет автору делать кроме презентаций видео Full HD, с рассказом (обычный захват с экрана). Раз уж версия коробочная. Видео-лекцию все же больше народу посмотрит, а так Вы намельчили там что-то в презентации.

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

                                                                        Only users with full accounts can post comments. Log in, please.