9

For a while now I have been studying Magento. I did quite a few modules, but I still think that I need a bit more training, but I can't think of an interesting module to do strictly for working with as many things as possible.

Here are a few modules I made: blog, admin email notification, related products, product view pop-up.

So, can anyone suggest a module that requires me to learn things I haven't touched yet, or interesting ways of thinking?

This question may not have 100% the Q/A answer form that is necessary for this site, but I hope I can get some suggestions

Thank you.

PS: Everything is strictly for educational purpose, I want to learn all the inns and outs of Magento.

15

When learning Magento there are a few stages:

Beginner

At this stage you are trying to learn the Magento file, class, and component structure.

These include:

  • XML

    Here you are learning how to change different configuration settings via the XML, some examples include, moving block positions, registering modules, and assigning new templates.

  • Blocks

    You set up custom blocks to make some business decisions, for example, showing a special icon on the frontend for specific product.

  • Models

    Here you learn how Magento accesses data from the database, and how to manipulate it in different ways, for example, getting a list of customers alphabetically.

  • Helpers

    Here you learn how to create helper classes for utility functions, for example, making a function that formats the customer names in uppercase.

  • Controllers

    Here you learn to make custom URL's that have custom functionality, for example, making a page where customers can check their 'warranty status'.

Intermediate

At this stage you are trying to learn about the different parts of Magento.

Some of these are:

  • Product

    Here you are trying to understand the different parts of a product and its attributes.

    Some examples would be:

    1) Getting and setting values to the products' attributes

    2) Getting and setting values to the products' selected options in the cart

  • Customer

    1) Getting and changing customer data

    2) Showing different views for specific users (such as for the sales team)

  • Sales - Orders

    1) Getting all products from order and their options selected by the customer

    2) Get the customer info for a given order

    3) Get all orders for a given date range

  • Backend

    1) Create custom Menu in backend

    2) Create custom tab in configuration page

    3) Store your own data in database

These are all examples, they can be totally different depending on your needs.

At this point you will find yourself browsing through Magento's core code, and trying to understand the steps Magento takes to accomplish a given task (like creating a new product).

As you can see at this point your viewing Magento more like an eCommerce framework, and by understanding better the different components, you can craft it to your will.

Advanced

At this point you are looking at Magento as a means to fulfill your clients business needs (obviously it's not imperative to feel that way, but it's a good sign).

Here are some modules that can help you think in interesting ways:

  • New Product Type

    Look around and try to see a product type that Magento doesn't support by default, and create a module that supports it.

    An example of this would be an event based product (like selling tickets to a sports game), the challenge is to allow the user to select a seat and a time, and the system would have to let them know if it's available, if not, it would let them know when the nearest available slot is.

    Part of the challenge is to make sure that the product works well in the following places:

    1) Backend - Admin should be able to enter in the necessary data (such as the sport type, cost, and number of seats available)

    2) Frontend - This information needs to be displayed to the user while shopping

    3) Cart / Checkout - User should see the sport type, seat type, number of seats, and date that he/she is buying.

    4) Orders - This information needs to be stored in the system so that owner knows what was bought

    There are more details you can add but you get the point.

  • Google Doc Product Import

    One of the more popular development areas in Magento is product importing.

    This module's goal is to import products and their data from a Google Spreadsheet, remember your client doesn't want to train their data entry worker in Magento ;)

    Here are rough idea of how it would work:

    1) Magento logs in to user's Google Drive account and looks for a file called Categories

    2) It parses the file to find all the other files in the drive it should look for (each category has a separate file)

    3) Magento goes to each category file and parses the file, each row contains one product with all of it's data

    4) Magento attempts to save the product in the database (or just the changes to the product if the product already exists), if there is an error it shows a user friendly error in the column for errors (in the spreadsheet).

  • Advanced Order Viewer / Analyser

    This module is all about seeing the orders in the backend in a business useful way. Essentially you are building a grid that can be sorted in different ways (for example: low to high, or alphabetically).

    Here are some of the features it will have:

    1) Ability to see customer associated with the order

    2) Ability to see total number of items for each order

    3) Ability to filter by date, customer, number of items ordered, and order toatal

    3) Filter will allow for multiple WHERE, AND, and OR selections (like layered navigation)

    In effect it will look like an excel spreadsheet, and the user can select which 'columns' to view, and can decide how to filter it so that they can make better business decisions.

  • Restaurant Store Module

    Another popular development area for Magento is it's integration with other systems and services.

    This module's goal is to create a take out food shopping experience, besides the need to edit / create a new product type, this needs to interface with a popular POS system, so that the client can have central management over all of their orders.

    Some other features to consider:

    1) Integration with Seamless and Grub Hub

    2) Ability for customer to see a live 'status' of their order

    3) Ability for customer to re-order their favorites

    4) Create a 'smart' incentives feature that gives percentages off to die hard customers for their favorite foods (the one's they buy the most)

As you can see, at this point it's more about understanding business needs at this point, then understanding how to change a product's attribute.

Summary

Most people do not learn in a certain order (like this post suggests), rather in certain areas they jump to advanced, while in others they might be in a beginner, or intermediate level.

No matter where you are, you can find ways to grow by coming up with challenges for that level.

  • @VladPreda your welcome, just make sure to give me a free copy of the modules you create ;) – pzirkind Feb 1 '13 at 15:29
  • 1
    Hehe, of course, in a few years when I start writing modules well enough to sell them :) – Vlad Preda Feb 1 '13 at 15:39
3

Not so much ideas for modules.

It is a good idea to become familiar how checkout works.

thus: Build a payment gateway module. extend checkout and add an extra step.

also do some work around the admin area, modules generally require admin sections for clients to use. Here I don't just mean system config, but usages of grids, tabs etc.

Good Luck B-)

  • +1 for the admin area comment. I'd look at extending grids and tabs too, to add extra functionality to existing admin functions – CCBlackburn Jan 31 '13 at 22:29
1

You can think on your own needs, I think is the best way for learning, because If you are doing something that you need, you will be more motivated than in other way.

If you don't have any need, you can think in the "general" needs that people would ask you for develop.

1

You could work on more complex solutions:

  • integration with CRM, ERP, CMS or else (synchronization of data in both directions)
  • Single Sign On solutions based on OpenID, Oauth, LDAP and/or else
  • Build an improved newsletter editor
  • Create a responsive design theme if you like more frontend work
  • Create a statistic monitoring with graphical like this module

You could also be part of the Magento Hackathon or take a look of existing projects of the Hackathon and participate to them. We always need people and you will find lots of kind of projects.

  • Awesome, thank you for taking the time to answer, the funny thing is that in 2 weeks I will start an integration with an ERP at work, a 2way sync :P – Vlad Preda Jan 31 '13 at 14:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.