Introductory Overview of CMS Diem

    Six months ago, I learned from a colleague about this CMS and she was very interested in me, recently I got around to digging into it, I hasten to share my impressions with hawkers and habragosts.

    Briefly about the main thing


    • Powered by Symfony1.4.
      Who is not familiar with symfony - getting started tutorial , official web-site .
    • In addition to the standard admin panel, it has an interactive control interface for the frontend, all changes are loaded via AJAX - which is very convenient when editing
    • Integrated Google Analytics, convenient viewing of server logs in the form of graphs, generating an admin interface for self-written modules, a web console and other goodies


    Detailed description and screenshots below

    Server requirements


    • Server: Unix (this is for production, development can be done on Denwer or xampp)
    • PHP version> = 5.2.4
    • PHP CLI ON
    • memory_limit> = 48Mb
    • pdo_mysql or pdo_pgsql or pdo_sqlite
    • json> = 1.0
    • gd


    Additional requirements: APC, mbstring, graphviz, PHP! = 5.2.9

    Actually, for a simple site standard virtual hosting will go, for projects with a load, use VDS with installed APC

    Charms Diem


    Firstly, Diem as an application written in symfony-framework preserves the entire development structure:
    yml - configuration, built-in cache, unit tests, three-level structure of templates (layout - module template, partial template)

    Secondly, Diem has its own control logic code, naming notation , built-in search system , plugins for popular tasks, code generation for self-written modules.

    Thirdly, in my opinion, the main advantage for the end user is a convenient content administration interface. I will try to tell you more about this later.

    Admin


    The admin admin page looks like this:



    We see summary information generated by server logs and google-analytics statistics.

    In the upper panel there are buttons for creating a new page, updating the cache, menus, APC usage indicator, and symfony debugging information (about the duration of the request, the number of calls DB, memory usage, etc.

    impressive, is not it? and it's all going in the version?.

    to write your own modules has its own approach: you describe the structure of the database and the module behavior in yml file, for example: Start those from the console ./symfony dm: setup and ... The script generates the necessary modules, Action Games and said circuit patterns, and you can already see in the admin section for goods management

    // config/doctrine/shema.yml

    Category:

      columns:

        name:             { type: string(20), notnull: true }

        body:             { type: clob, extra: markdown }

     

    Product:

      columns:

        category_id:      { type: integer, notnull: true }

        name:             { type: string(15), notnull: true }

        body:             { type: clob, extra: markdown }

        image:            { type: integer, notnull: true }

        cost:             { type: integer(5), notnull: true }

      relations:

        Category:

          foreignAlias:   Products

        Image:

          class:          DmMedia

          local:          image

          onDelete:       RESTRICT

     

    // config/dm/modules.yml

      "Каталог":

        category:

          model:                  Category

          page:                   true

          name:                   "Категория|Категории"

          admin:                  true

          front:                  true

          components:

            list:

              cache:              true

            show:

              cache:              true

     

        product:

          parent:                 category

          model:                  Product

          page:                   true

          name:                   "Товар|Товары"

          admin:                  true

          front:                  true

          components:

            listByCategory:

              filters:            [ category ]

              cache:              true

            show:

              cache:              true

            showLittle:

              cache:              true








    Based on the list and show keywords, templates are generated for viewing products in the form of a list and a single display ...

    Is it even more impressive?

    Then wait for the articles to continue ...

    Lastly, a few screenshots about which I no longer have time to write in detail:


    Editing the feedback form (again, the form is generated by the yml settings), it remains to overlay the css-design and the form is ready for use (validation, writing to the database , display in the admin panel provides diem)

    It remains to drag the mouse with the mouse to the desired location on the site and that's it.


    In the left tab “pages”, as you can guess, the site structure is hidden: it is used when editing menus, for quick navigation, filling directories, etc.

    Links:
    Project website
    Sites created on cms-diem
    Development of sites on cms-diem To

    interested parties, I suggest teaming up to create an adapted version for runet with an expanded set of ready-made modules (for example, a photo gallery, an online store, integration with yandex statistics ...)

    Who wants to “play around” - UPD1 installation

    guide: we see how much Diem eats memory

    with debug turned on and standard settings total ~ 15Mb in normal mode (without debug) and standard settings total ~ 14Mb (1Mb eats debug) with swift_mailer turned off (as advised by symfony developers to increase I'm performance) is also in the region of ~ 14Mb
    memory_usage = 15653864
    memory_peak_usage = 15837840




    memory_usage = 14266416
    memory_peak_usage = 14338544





    (swift mailer was not called anywhere - the autoload didn’t load anything, we eat the same amount of memory) we

    turn on the page cache: total ~ 6Mb (we save another 8Mb + we minimize database queries) it’s interesting to compare with Joomla and Drupal
    memory_usage = 6275864
    memory_peak_usage = 6275864




    Also popular now: