The Basics of Creating a Magento Module

A lot of Magento community provides a variety of feature rich modules (free or paid).Together with the magento functionality, it allows you to solve a lot of tasks without programming skills. But what if they don’t work as you want them to? So it’s better to create your own module from scratch and understand the Magento architecture as well.

Creating a custom magento module is a core part of any magento project. Because at any point, you may need to integrate your own functionality in your existing magento project.

This article will cover a number of interesting topic :

· The app/code directories

· The structure and creation of a Magento module

· Event observers

Before we begin install Magento, either locally or on a development server

DISABLE THE CACHE

You can do this by going to Admin Panel > System > Cache Management > Select All > Actions: Disable > Submit.

The app/code Directory

app/code directory is split into three areas: core, community and local.

CORE

The app/code/core directory contains all of the functionality regarding products, categories, customers, payments, etc.

COMMUNITY

app/code/community contain modules that have been provided by third parties

LOCAL

An empty app/code/local directory. Here we can add modules for our magento installation.

MODULE NAMESPACE

Create is a “namespace.

Create the directory app/code/local/iMediadesigns

MODULE NAME

The module we are creating will write log entries each time a product is saved, Create the directoryapp/code/local/iMediadesigns/LogProductUpdate.

Configuring Our Module

Create a simple config.xml file

<?xml version=”1.0" encoding=”UTF-8"?>

<! — The root node for Magento module configuration →

<config>

<! —

The module’s node contains basic

information about each Magento module

<modules>

<! —

This must exactly match the namespace and module’s folder

names, with directory separators replaced by underscores

<iMediadesigns_LogProductUpdate>

<! — The version of our module, starting at 0.0.1 →

<version>0.0.1</version>

</iMediadesigns_LogProductUpdate>

</modules>

</config>

Activating Our Module

Let’s createapp/etc/modules/iMediadesigns_LogProductUpdate.xml with the following content:

<?xml version=”1.0" encoding=”UTF-8"?>

<config>

<modules>

<iMediadesigns_LogProductUpdate>

<! — Whether our module is active: true or false →

<active>true</active>

<! — Which code pool to use: core, community or local →

<codePool>local</codePool>

</iMediadesigns_LogProductUpdate>

</modules>

</config>

Is The Module Enabled?

Navigate to System > Configuration > Advanced > Advanced and view the “Disable Modules Output” listing, we should see our iMediadesigns_LogProductUpdate module listed as enabled.

Configuring Our Model’s Directory

We need to inform Magento where to find models in our module by updating config.xml

<?xml version=”1.0" encoding=”UTF-8"?>

<config>

<modules>

<iMediadesigns_LogProductUpdate>

<version>0.0.1</version>

</iMediadesigns_LogProductUpdate>

</modules>

<! — Configure our module’s behavior in the global scope →

<global>

<! — Defining models →

<models>

<! —

Unique identifier in the model’s node.

By convention, we put the module’s name in lowercase.

<iMediadesigns_logproductupdate>

<! —

The path to our models directory, with directory separators replaced by underscores →<class>iMediadesigns_LogProductUpdate_Model</class></iMediadesigns_logproductupdate>

</models>

<events>

<catalog_product_save_after>

<observers>

<iMediadesigns_logproductupdate><class>iMediadesigns_logproductupdate/observer</class>

<method>logUpdate</method>

<type>singleton</type>

</iMediadesigns_logproductupdate>

</observers>

</catalog_product_save_after>

</events>

</global>

</config>

Admin Panel > System > Configuration > Developer > Log Settings > Enabled.

The article will help you to understand how magento module works and to make your magento web development project successful. If you have any questions let us know in the comments section.

iMediadesigns provide cost effective web design and development solutions and offers custom website design services in Toronto