In the Magento architecture, a "Block" is one of the first class
elements in the structure of Magento layouts. Every page in Magento is
decorated by the "Layouts" file and the content is filled up by the
"Blocks" of the different modules. Magento blocks are a really powerful
and flexible way to plug your content into the already existing
layouts. On the other hand, you could also use layout XML files to
easily remove or Reposition any existing blocks.
Structural Blocks
We could say that
"Structural Blocks" are the containers holding the "Content Blocks".
Structural blocks themselves don't have any actual content to display,
but they in turn display the content blocks at the end. As the name
suggests, they're used to structure the content of the whole page.
For
example, "Header", "Footer", "Left" and "Right" are structural blocks
in Magento. "Content blocks" are assigned to the different structural
positions of the layout of the Magento page, which in turn displays the
actual content of the content blocks.
Content Blocks
"Content Blocks" are the real
fire power, generating the actual content for the display. As we've just
discussed in the previous section, you need to assign the content block
to one of the structural blocks for the front-end display. There are
some other ways which allow us to insert the content blocks using short
codes, but we'll see more on that later.
Content blocks can be of
any form, from a simple static content block to a list of the most
recent products on the home page! In fact, the majority of the content
is generated by the content blocks spread all over the different modules
in Magento.
Custom Block Development
We're going to
develop a very basic custom Magento module for the development of our
custom block. Our custom block will be a simple block displaying the
most recent products available in the store.
I assume that you're
familiar with the basic structure and conventions of the Magento module
files. Now, let's see the file structure we'll need to implement for our
custom block.
-
app/etc/modules/Envato_All.xml
: It's a file used to enable our custom module.
-
app/code/local/Envato/Recentproducts/etc/config.xml
: It's a module configuration file.
-
app/code/local/Envato/Recentproducts/Model/Recentproducts.php
: It's a model file which provides the array of most recent products.
-
app/code/local/Envato/Recentproducts/Block/Recentproducts.php
: It's the main block file for our custom block.
-
app/design/frontend/default/default/template/recentproducts/recentproducts.phtml
: It's a template file which contains the XHTML-related stuff.