This presentation was part of the concrete5 Café held in the Exove premises in Helsinki, Finland (28.10.2014).
Antti Hukkanen from Mainio Tech gave a presentation of concrete5 covering many of the concrete5's developer concepts and comparing the system briefly to Drupal and WordPress. The future of concrete5 (5.7) was briefly covered at the end of the presentation.
Thank you for everyone who took part in the event!
Mainio Tech:
http://www.mainiotech.fi/
Exove:
http://www.exove.com/
2. Topics
1. Mainio Tech (About us)
2. concrete5 in General (for non-concrete5’
ers)
3. Comparison (vs. Drupal, vs. WordPress)
4. concrete5.7 (The future of concrete5)
3. Mainio Tech
• Founded 2011
• Small office of a couple of developers in
Lauttasaari, Helsinki
• Focus on technology
• All website projects with concrete5
• Personally actively using concrete5 since
2010 (v5.4.0.5)
5. Page Types / Page Templates (5.7)
• Every site consists of different pages with different
structure
• Page types/templates generalize this into pre-made
”templates” that give the structure to a page
6. Areas & Blocks
• Each page type in
concrete5 consists of
editable areas
• Blocks are like ”lego
blocks” that can be
placed into any area
of any page
7. Blocks
• Blocks map the real life
concepts into reusable
”content builder” elements
that can be placed in
areas
• Allows the developer to
create any kind of editing
UI for specific type of
content
8. Attributes
• Attributes generalize the ”fields” concept for
any type of object
– Internal objects that take advantage of attributes:
Page, File and User
• Allows the on-the-fly creation of new attributes
for any object that utilizes this architecture.
Can be defined through the UI.
– E.g. ”we need our users to tell us their names” or
”we need the ability to tag all our files”
• Attributes are typed into specific types, e.g.
text, boolean, date/time, select, file, etc.
– Developers can create own attribute types that can
be attached into any object that use the
architecture
9. Single Pages
• Single purpose pages with view layer and
controller
– E.g. registration, login, dashboard pages, etc.
• ”Using concrete5 as a framework”
• Mainly used to build dashboard functionality
• Not great for multilingual sites
– Page types are better for ML sites, they also provide
the same kind of architecture (view-controller)
10. Packages
• Everything can be ”packaged” in concrete5
– Blocks
– Page Types
– Page Templates (5.7)
– Single Pages
– Themes
• Packages are used to make general purpose
functionality available for multiple sites (compare
to Drupal modules, WordPress plugins)
11. Some Technical Points
• MVC
– Blocks (view-controller)
– Page Types (view-controller)
– Single Pages (view-controller)
• Overrides architecture allows overriding any
part/file of the core
• Database abstraction layer (ADODB in 5.6,
Doctrine 2 in 5.7->)
12. + Lots more…
• Functionality that helps in building online communities
– Originally lots of the framework behind concrete5 was developed for this purpose
• Stacks for reusable content
• Flexible permissions structure
• Workflows (enterprise use)
• Jobs architecture for (recurring) automated tasks
• Caching layer
• + Wide range of add-ons
– Not as many as with Drupal or WordPress (which is not necessarily a bad thing)
– Many add-ons are paid but very reasonably priced ($15-100) and the commercial
license allows full code modification for the project where they are used, one license
per project
15. concrete5 vs WordPress
• WordPress = ”Printing Press”
• concrete5 = ”Word Processor”
• Solving the problem from different perspectives
– WP: CMS bolted on top of blogging platform
– C5: Built from bottom up to be a bridge between
developers and site owners
• concrete5 is more flexible in terms of the content
structure of a page and also in terms of being a
developer framework
16. Concepts: concrete5 vs WordPress
concrete5 WordPress
Attributes N/A
Blocks Widgets (although they serve
a different purpose)
Packages Plugins (and Themes)
Page Types Templates
Stacks Sidebars
Themes Themes
17. concrete5 vs Drupal
• Drupal = ”Developer toolbox with CMS functionality”
• concrete5 = ”User friendly CMS with developer framework”
• Setup process is much more ”lean” and you can get a site up and running much quicker in
concrete
– Drupal: ”For a basic site, you need module A, B, C, D and E, and also need to know how they all
work together”
– concrete5: Install and start building
• Easier to teach
– concrete5 works truly through an in-context editing interface. In Drupal, the user experience is
much more confusing to a newbie (as of my own experience, prior to drupal8). Probably the overall
experience is still better in c5 when comparing concrete5.7 vs drupal8, although drupal8 introduces
inline editing.
• MVC
– Has much of do with preferences but many developers prefer MVC
– It usually keeps the codebase much cleaner, more understandable and more easily approachable
(my personal opinion)
19. Where to use concrete5?
• Short answer:
– Content and design driven web projects
– Online communities
– Or basically anywhere, there is not a reason why concrete5 would not fit
some problem scope but we ourselves would rather tailor complex web
application on top of a framework (more flexibility)
• Longer answer:
– concrete5 shines in design-centric sites that require lots of different
types of content
– When making pixel perfect sites that are easy to edit for the end user
– When you want to deliver solutions that the end user is able to use
21. New functionality in 5.7
• Full in-context editing
• New image editor
• Conversations (for building forums,
commenting, etc.)
• Groups can now be hierarchical
22. Different in concrete5.7
• Page Types and Page Templates
• ”Tools” no longer exist
– Use custom routes and custom controllers insead
• Directory structure
• General structuring of the code
– Most backend stuff now lie in the /src directory,
except for the controllers
23. Developer updates in concrete5.7
• New era of PHP finally reaches concrete5
– Composer
– Namespacing
– Code styling: PSR-2 & PSR-4 + generally better code guidelines (e.g. for writing JS
and CSS)
– Autoloading (PSR-0)
• Symphony framework components replace some of the old homebrew
components
– Routing layer
– Events layer
– Request, Session & Cookie libraries (Symphony HttpFoundation)
• Doctrine ORM for DB abstraction
– Not currently very widely used, even in the core
24. Other new developer stuff in 5.7
• Built-in assets system (CSS/JS minification
and combining, dependecy management)
• Authentication layer for building 3rd party
authentications
• New taxonomy: Topics
– E.g. categorization of Blog Entries or Projects
(examples in the default 5.7 installation)