I’ve just finished reading “Creating Concrete5 Themes” book by Remo Laubacher.

I decided to read this book not because I don’t know how to create concrete5 themes, but because I need a manual resource by hand that I could refer my assistant (junior developer) to. Especially if I hire somebody who is rather good at php/html/css, but not familiar with concrete5 yet. Explaining everything by myself is time consuming and waiting for the developer to learn concrete5 from scratch takes some time as well. A good step-by-step tutorial is a great thing to have for such case.

The book language is rather simple and easy to understand for both experts and new concrete5 users. Everything goes with examples and explanations. Though experienced developers may find it even excessive, the book looks to be designed not for experts, but primarily for those who is just taking their first steps in concrete5 theme building. Nevertheless, and concrete5 professionals will be able to find something new for themselves. Though I didn’t discover anything that radically changed my workflow, I learned some things about other developers’ approaches, for example, the book introduced bootstrap framework to me.

While the book is easy to understand, it is recommended to get familiar with html, css and php basics before reading this book. Even though you can create sample themes by simply copying and pasting the code snippets from the book, you must understand what you are doing in order to get to the next level of the concrete5 themes development. The author explains every bit of code, but he will not teach you how to implement any of your ideas in your custom concrete5 theme (though there are many examples of custom features).

In the first chapter of the book Remo Laubacher explains to concrete5 novices how to get concrete5 installed (where to take the distribution package, what kind of server is needed and so on) and the basics of how to use concrete5. By the way, though my first thought on the concrete5 basics in the book was “What the hell this info is doing in the book on themes development?”, later I understood that for beginning developers this information is almost vital, because many of inexperienced ones simply don’t understand what should be implemented in theme and what can be done through standard cms functionality, for example: splitting the content in several columns and rows can be easily done via built-in “Layout” functionality (however you might still need to create a page type in concrete5 theme if the layout is rather complex or somehow specifically decorated/positioned).

In the 2nd chapter the author explains the software architecture. It is essential for beginning concrete5 developer to know that. There is nothing really complex here, but everyone should understand what the empty folders in website root directory are for. I faced with many users who mess up the ‘concrete’ core directory with their updates and lose everything after upgrading to the next version, but if you understand the software architecture, you will never have such problem. Also, understanding anatomy of pages in concrete5 (collection->areas->blocks) is very important for someone who needs to create concrete5 theme. There is even more tips and tricks in this chapter (event hooks, helpers, etc)

The third chapter is “Creating Your First Theme”. This is where the main subject begins. The author goes through every step of initial theme creation and clearly describes what every file is for. He covers many of theme customization options:

  • customizable styles in css;
  • global areas;
  • page types;
  • using blocks in concrete5 theme directly;
  • using page attributes for custom theme functionality;
  • using page specific variables;
  • how to set the maximum number of blocks in area

and other.

The 4th chapter is “Styling Single Pages”. Though it is not directly related to theme creation process, Remo Laubacher explains what are single pages for and gives an example on how to create your own single page. This chapter also describes how to apply your custom style for existing single pages (for example: /login page).

The next chapter “Styling the Block Output” explains how you can customize the blocks layout by developing your own templates for specific block types. There are a couple of examples, fully explained, which make the thing very clear and useful for developers.

Finally, “Responsive Themes” chapter is the icing on the cake. It is the most clear description of what is responsive theme (and how you can build your own one) I’ve ever found on the web. I will definitely refer to this book chapter if a junior developer asks me anything about responsive themes.

Conclusion:

  • if you are a concrete5 guru, you might not need this book unless you need it as a tutorial for somebody you are hiring or training;
  • if you are a developer, but you don’t have enough expertise with the cms yet, you will find this book useful as it will make some things easier for you to understand; you can use it as a desk book that is always at hand;
  • if you are a concrete5 beginner, who wants to create his first concrete5 theme, this book is ideal for you.