Understanding C5 architecture

Permalink 1 user found helpful
Hi All

I've been playing around & using concrete5 for a couple of months now. Just poking around the editor, building a few pages. I even managed to convert Skeleton theme into a quick concrete theme using this great tutorialhttp://documentation.concrete5.org/developers/designing-for-concret...

Previously I have been a Drupal & Wordpress developer and one thing I've found that helps newbies is to understand the most basic element that a CMS is built around.

For instance Drupal is build around nodes (well it was until D8), understanding node_ids is critical, Wordpress most basic element is posts and the post_id.

At the moment I can't get my head around C5's architecture. Is it pages, whats the basic element in the database so when one develops add-ons, custom blocks etc. What am I manipulating or referencing.

Also is C5 Block analogous to a Drupal block.

The docs online are great but don't seem to have the depth I'm looking for. Maybe theres a reference or book I haven't found yet.

Look forwarding to responses and getting stuck into C5 (or unstuck :-))

View Replies:
jakobfuchs replied on at Permalink Reply
There is no good high level introduction to concrete5 I am aware of.

If you are a capable PHP programmer check out the classes in the /concrete/src directory to see how to interact with the API and how these classes work together.

The most important ones for everyday theme development use are probably: Page, User and Attribute.
pxkrunch replied on at Permalink Reply
Hi jakobfuchs

Thanks for the heads up, I'll have a look through those classes first.

Also does C5 use the concept of custom content types for say products or a simple customer database. Or do I store meta data in a Attribute type by say creating new keys or ID's?
jakobfuchs replied on at Permalink Reply
You can use Page Types to set up reusable custom pages like blog posts, product pages etc.

To create something like a customer database you can either create new User Attributes to track the data or create your own database tables.
pxkrunch replied on at Permalink Reply
ramonleenders replied on at Permalink Reply
Concrete5 hasn't got a thing like "Streams" (PyroCMS), "Channels" (EE) or "Entry Types" (Craft). It does use attributes though, which you develop one time and assign to something (your page for example). ProcessWire also got some sort of "Field Types" which you can assign to a channel/stream.

Everything within Concrete5 is more or less build on pages. You also have Single Pages (those are programmatically build by your Add-On/Package).

Is it something like this you were searching for?
pxkrunch replied on at Permalink Reply
I guess so - its the data abstraction layer that I'm used to working with.
In Drupal you use the CCK & Views modules.
In Ruby Rails or CodeIgniter you start by defining your models first, then controller, then views.

Working with pages & themes first is counterintuitive to me but thats just my old muscle memory at work.

Maybe I just need to start by building a few sites first in C5 :-)
OKDnet replied on at Permalink Reply
Although these were written for 5.6 & earlier, the main concepts of pages, blocks, attributes, etc. hasn't changed, so these should help.



pxkrunch replied on at Permalink Reply
Thxs - this is great for me as I know Drupal & Wordpress.
I wonder why this hasn't been included in the 5.7 documentation?
OKDnet replied on at Permalink Reply
Yeah, when I read your questions I immediately thought of these, & was pretty sure you would appreciate the thoroughness of the comparison. The radically different approach, the use of the term "Blocks" in both systems for something that works so fundamentally different, etc. and it's no surprise there would be some confusion for someone coming from Drupal.

The 5.7 Docs are a WIP (with some very recent significant progress).

I'm pretty certain once you get your brain wrapped around Concrete5 you will fall in love with it. I believe most devs who have come from Drupal and actually took the time to get acquainted ended up appreciating the elegance and sophistication of Concrete5.