eZ publish is a bit like Lego. It provides a clean base and a series of "blocks" that you can use to create your solution. How you combine these blocks will determine how the system works. Most of what you'll need is already provided in the framework but if you need to, you can add your own custom blocks to achieve what you need.
So, what do I mean by blocks?
There are three types of blocks:
The content blocks are formed by data types that combine to form content types. These are the basis of the system. eZ publish being a content management system, content is the core of all solutions.
The data types already exist within eZ publish; you simply select a number of them together to create a content class. The content class is like a table in a database. This defines the structure of the content that the system will store.