Ultimate Module Creator.

Because I was always stuck on doing the same thing over and over again, each time I needed to create a module, I've decided to create a module that does the work for me.
I know that there are some module creators out there, but an other one doesn't hurt.
You can find the "Ultimate ModuleCreator" on github. https://github.com/tzyganu/UMC1.9

It is also available on the Magento connect:
The module creator was built on Magento CE 1.7. It works on Magento CE 1.7+.
The extensions you create with it work on Magento CE 1.7+. They will probably work on equivalent PE and EE, but I didn't test.
After you install the module creator you will find it under the System menu.


Keep in mind that the module creator cannot do everything for you. But at least you will not need to create the skeleton for managing (back-end), listing and view-ing your entity (frontend). The frontend files might need some styling after you create them, but at least you will have all the info you need.

Here is a small list of what it can do:
Version was released on October 27th 2015:
  • Improvements
    • No new line on some source files
    • Added client side validation to module name and namespace
  • Bug Fixes
    • "Template" should not be allowed as attribute name or entity name
    • Labels and notes were not escaped in the generated code
Version was released on December 19th 2014:
  • Features
    • Support for signed int attributes/fields
    • Generating modman file
    • Support for canonical URL in generated module
  • Bug Fixes
    • Removed calls to deprecated method htmlEscape
    • Fixed wrong helper alias in Yes/No attribute display
    • Fixed wrong display of multiselect attribute on frontend
    • Fixed 2 status fields generated in the setup file
  • Improvement
    • Cleaned up the UMC code and the generated code. Now all files (almost) follow the zend coding standards.
Version was released on August 27th 2014:
  • Feature
    • Support for URL rewrites for entity list pages
  • Bug Fix
    • EAV tree entities admin tree not refreshing on save
  • Improvement
    • Cleaned up the code a bit
Version was released on August 19th 2014:
  • Feature
    • Link to related entities in grids and add/edit forms
  • Bug Fixes
    • Fixed related entities grid columns
    • The related entities tab did not show only selected entities on category edit mode.
Version was released on July 22nd 2014:
  • Feature
    • Set default values when creating a module
  • Bug Fixes
    • For attributes that have options, the options were not escaped in the install script.
    • The generated files could not pe written to disk on ce because of the changes in Varien_Io_File in this version.
  • Improvements
    • Set default values for EAV entities
    • n the UMC UI, when submitting a form that has errors all the fieldsets that contain fields with errors will be automatically opened to get a better wiew on the error.
Version was released on July 21st 2014:
  • Feature
    • REST API for created modules
Version was released on June 12th 2014:
  • Improvements
    • Changed dropdown options separator to new line instead of pipe
  • Bug Fix
    • Escaped attribute labels and notes
Version was released on June 11th 2014:
  • Bug Fixes
    • For modules with entities that are marked as being product or category attributes the resource model parent class is set to `Mage_Core_Model_Resource_Setup` and it should be `Mage_Catalog_Model_Resource_Setup`
Version was released on June 2rd 2014:
  • Bug Fixes
    • Tree entity list images not generated
    • Category relation tab appears for tree entities even if not set to yes.
    • Entities link top menu does not get selected
Version was released on May 2nd 2014:
  • Improvement
    • Parent / child entities have a method of retrieving the associated entities (children / parent)
  • Bug Fixes
    • Fixed some typos in the locale file
    • Fixed some typos text messages
    • Fixed missing single quotation mark in _filterDates()
    • Fixed missing translation for some system.xml labels
Version was released on April 25th 2014:
  • Features
    • Support for EAV entities.
    • Module Admin menu can be placed anywhere in the menu tree.
    • The frontend route of the module can be set manually on creation instead of using the module name.
    • Allow users to comment on the generated entities.
    • Link entities in a many to many relation with the catalog categories.
    • Additional attribute types (dropdown, multiselects)
    • Ability to add many to many relations between tree entities
    • Displaying flat entities by store is optional now.
  • Improvements
    • Pimped up the admin UI of the module creator
    • Faster admin UI. No more ajax calls to add a new attribute or a new entity.
    • Made the HELP section include more valuable data.
    • The aliases for models/blocks/helpers include the module namespace to avoid conflicts
    • Generate an uninstall file to make it easier to remove installed modules.
  • Bug Fixes
    • Most important: Module names can include uppercase letters. Until now using 'ModuleName' for the name of the module would make that module unusable on UX servers. Now it works.
    • Entities were not displaying in product page unless they had a separate view page.
    • Replaced 'addFilter' that had no effect with 'addFieldToFilter'

Version was released on June 4th 2013:
  • Bug fixes:
    1. module does not create records in the namespace_module_store table when 'add seo attributes' is set to 'No'
Version 1.6.3 was released on May 31st 2013:
  • Bug fixes:
    1. upladed images & files lost when saving a tree entity twice.
    2. widget chooser broken for tree entities
    3. translations missing.
  • Features:
    1. added subtree widget for tree entities.
Version 1.6.2 was released on May 10th 2013:
  • Bug fixes:
    1. `lookupStoreIds () on a non-object` error on Tree entities.
Version 1.6.1 was released on April 22nd 2013:
  • Fixes:
    1. Store selection tab not generated (Thanks IonTrust)
Version 1.6.0 was released on April 19th 2013:
  • Fixes:
    1. errors in some function documentations
  • Features:
    1. DDL install scripts for generated entity (Can be enabled/disabled from system->configuration)
    2. enable entities by store view (similar to CMS pages)
    3. meta title for admin pages
  • Refactoring:
    1. moved meta information fields to separate tab.
    2. completed the help tab
Version 1.5.0 was released on April 8th 2013:
  • Fixes:
    1. Fixed Generated translation file
    2. Uppercase letter in entity codes is now restricted
  • Features:
    1. Generate API (v1 & v2) files.
    2. WSI compliance for API
  • Refactoring:
    1. Entity Model.
Version 1.4.1 was released on March 16th 2013:
  • Fixes:
    1. siblings not listed in the order set in admin.
    2. entity models are missing event prefixes and event objects
  • Features:
    1. Added 'country' field
    2. Added log creation for each module with the files that are created.
  • Refactoring:
    1. Clean up for image attribute renderers (frontend and backend).
    2. added Mage::logException for admin exceptions
    3. Refactor image helper (thanks carco).
Version 1.4.0 was released on March 4th 2013:
  • Fixes:
    1. Related entities not remembered on grid select
    2. URL rewrites Router not generated correctly
    3. Admin layout for related entities
  • Features:
    1. Added admin search support
  • Refactoring:
    1. Renamed source folders. Made them shorter to avoid windows unzip issue. (Hopefully this will fix it.)
Version 1.3.0 was released on February 23rd 2013:
  • Fixes:
    1. Text corrections
  • Features:
    1. Added url rewrites functionality for created entities
  • Refactoring:
    1. Removed all 'Mysql4' class names and file names. Replaced with appropriate class. (Magento 1.7 "style")
Version 1.2.0 was released on February 16th 2013:
  • Fixes:
    1. Not remembering related entity products on page/sort order change
    2. validate missing: name_singular, name_plural
  • Features:
    1. Text, Integer Decimal attributes allowed to act as name.
    2. modman, modgit
Version 1.1.1 was released on January 3rd 2013:
  • Fixes:
    1. Fixed tree behaving entities widget chooser
Version 1.1.0 was released on December 31th 2012:
  • Features:
    1. Added 'tree - behaving' entities
  • Bug fixes:
    1. Fixed: 2 entities with same name admin issue.
    2. Fixed: mass action issue
    3. Fixed: related entities not always saving in admin
    4. Fixed: frontend related entities listing gives error.
  • Known issues:
    1. you cannot add many to many relations between tree entities.
Version 1.0.0 was released on November 30th 2012:
  1. Added entity relations (one to many and many to many)
  2. Added possibility for direct install
  3. Added expand/collapse for all fieldsets for easier access.
Version 0.2.0-beta was released on October 17th 2012:
  1. Entities can be linked "many to many" with products. Entities can be listed on product pages. Products can be listed on entity pages.
  2. Refactored admin controller for generated entities.
Version 0.1.0
  1. It allows you to create only flat entities. EAV entities are not supported (yet).
  2. You can create one or more entities under the same module.
  3. You can decide to create only the files needed for the back-end to work for your entities or both front-end and back-end files. (list/view entity)
  4. You can add as many fields as you like for each entity. If you ever used a phpMyAdmin then you are qualified to use this extension.
  5. Support for different types of fields: Text, textarea, datetime, yes/no, int, decimal, file, image, website
  6. It creates widgets of your entities to use in CMS pages.
  7. It creates an RSS feed page for you entities (if you decide to create the frontend files.)
  8. The frontend pages support breadcrumbs, that you can deactivate later.
  9. Il allows you to decide what fields will be shown in the admin grid.
  10. WYSIWYG support for textarea fields.
  11. Resize support for image fields (just like the product has.)
  12. Generates language csv file. All you need to do is translate it to your language.
Any suggestions and (constructive) criticisms are welcomed. If you have any other ideas please post them in the comments. I have some others and I will implement them in the next version(s).


  1. I can not install on magento-

    CONNECT ERROR: Package file is invalid
    Invalid package name, allowed: [a-zA-Z0-9_-] chars
    Invalid version, should be like: x.x.x
    Invalid stability
    Invalid date, should be YYYY-DD-MM
    Invalid channel URL
    Empty authors section
    Empty package contents section

  2. Are you trying to install it using magento connect?
    If you are, then don't.
    Just copy the folder app over the app of your Magento instance and the skin folder over the skin folder of your instance.

    Nothing should be overwritten.


    1. Hi Marius, still does not work ....
      Thanks, Sabino.

      Checking dependencies of packages
      Starting to download Ultimate_ModuleCreator-1.0.0.tgz ...
      ...done: 88,036 bytes
      Installing package community/Ultimate_ModuleCreator 1.0.0

      CONNECT ERROR: Failed to open file C:/Program Files/Zend/Apache2/htdocs/mage171\downloader\.cache\community\Ultimate_ModuleCreator-1.0.0\app/code/community/Ultimate/ModuleCreator/etc/modulecreator/app/code/codepool/Namespace/Module/Block/Adminhtml/Catalog/Product/Edit/Tab/Entity/01_content.php

    2. I'm sorry. I don't know what to say.
      I was able to install it (on a windows server) from the Magento connect and also using the zip from github. And I'm no the only one that was able to do it.
      If you ever find the problem/solution please post it here also. Maybe it can help others.

    3. I'TS TRUE... but it's a very strange situation.

      Now explain. If I install on my remote hosting it's all OK. Instead on my local (windows based) developer magento installation I must to copy the folders (as your previous post ...)

      After deleting a maintenance.flag (why?) it's all ok on my developer installation also...

      Thanks for all. Sabino.
      p.s: write you in italian?

    4. Thanks Marius for this wonderful tool!

      I also had this install issue, here's my fix:

      I simply extract the .tar (1548 KB) from the tgz (128 KB) with 7zip.
      In Magento download manager, choose local file to upload and select the .tar file, then install it.

      I think the path of 01_content.php is too long to be able to "double" extract in cache memory (gunzip first then untar), depending on some settings in OS.

  3. Please provide us with the article, for creating a payment module using this module creator. Thanks in advance.

    1. I'm sorry for disappointing you but this is not build for this.
      It only allows you to create custom entities (for example: articles, press releases, FAQs, ...) and link them among each other or to the products. It cannot create payment modules or shipping modules.


    2. Thank you for your reply :) Hope u will create a module for this soon.

    3. Maybe I will, but don't hold your breath :).
      Payment methods are not my favorite things about Magento. And as long as I do this on my free time and for fun, the chances are slim. (but you never know).

  4. Would love to see other types of entities like collection based on filters, email creation, PDF templates, ... and be able to link them of course :-)
    Hope you have lot of free time!

    1. Can you elaborate your idea of 'collection based on filter, email....'? Give me an example.
      I'm really interested.

  5. Email:
    A Model/Observer.php::sendEmailAction may be build with moduleCreator via another kind of entity?

    Different from new tables and fields but not so far from the user's point of view. Not sure if it's easy or feasible.
    A cron job can be the "link" between existing or future data and an action(here: send email)?
    Further on, you can add Facebook, twitter feeds "linked" to your store's new data, events, ...

    Collections and filters:
    You can use Magento to extract data from DB using collections with filters (see http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento), I guess you can create another entity type where you can, first, test-search for precise data, or kind of data, or field using collections and filters on existing tables and then build the "Magento-SQL" code in this type of entity to build a view of this result (basically build and present a collection with filters entered by user).
    You touch the way Drupal manage its data through "Views".

    Since you already master SQL Model to create tables, links and pull data from them I guess it can be a piece of cake (for you) to pull from another table? Problem is with EAV, might keep them away to start.

    Let me know if it helps :-), you can email me using the URL domain of this comment.

  6. Looking for advice... Installed great, setup was easy to understand, I set the creator to install the files for me, but I don't see any menu items for the new module I created. The files are all in place, but nothing is different on the menus. It is active as a module. Any ideas? Thanks, KB

    1. Hello Kevin.
      Did you clear the cache?
      If you have the compilation enabled, disable it and try again.

  7. Morning Marius,

    Thanks for the great meta module!

    I'm having troubles adding fields once the entity is configured. I click on Add field and I get the Please wait briefly but then nothing happens. On inspection of the Console there is an Ajax 500 error that I would send you a shot of but I'm unsure of your email address?

    The browser is chrome 24 for mac.

    Would be very appreciated if you could hint me a solution.

    All the best


    1. Hello Peter.
      I don't think I can help much you here. Can you dig deeper and see what is causing the 500 server error?
      Does the error appear only on this extension or there are other requests that result in this error?

      As for the e-mail address, just open one of the files from the Module Creator and you will find it in there.


  8. Hi. Great module. I've got it installed just fine, but when I go to save my custom module I get the following error. Any ideas? Thanks

    Cannot send headers; headers already sent in /usr/www/users/id4/smartpour.com/2013_dev/magento/lib/Varien/Io/File.php, line 474

    #0 /usr/www/users/id4/smartpour.com/2013_dev/magento/lib/Zend/Controller/Response/Abstract.php(148): Zend_Controller_Response_Abstract->canSendHeaders(true)
    #1 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Core/Controller/Response/Http.php(106): Zend_Controller_Response_Abstract->setRedirect('http://66.39.14...', 302)
    #2 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Adminhtml/Controller/Action.php(348): Mage_Core_Controller_Response_Http->setRedirect('http://66.39.14...')
    #3 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/community/Ultimate/ModuleCreator/controllers/Adminhtml/ModulecreatorController.php(328): Mage_Adminhtml_Controller_Action->_redirect('*/*/')
    #4 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Ultimate_ModuleCreator_Adminhtml_ModulecreatorController->saveAction()
    #5 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('save')
    #6 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
    #7 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
    #8 /usr/www/users/id4/smartpour.com/2013_dev/magento/app/Mage.php(683): Mage_Core_Model_App->run(Array)
    #9 /usr/www/users/id4/smartpour.com/2013_dev/magento/index.php(87): Mage::run('', 'store')
    #10 {main}

    1. Hello Evan.
      You are getting this error because the folder that the extension is trying to write in is not writable.
      If you choose to install the extension you create directly the all the folders must be writable.

      You can choose to create an archive with the extension and install it manually later. This should work because the 'var' must be writable for Magento to function.


  9. Hi. Yesterday I easily created a module in an archive and downloaded it. Installed correctly. Today, I no longer see that module listed in my moduleCreator interface and when I go to create module archives they all show up as .tgz files of only 47 bytes (not real archives). Any idea what's going on? Thanks!

  10. I think I solved by archiving bug (only creating 47 byte tgz files). I needed to chmod my var/package/tmp folder to be 777!

  11. Thanks for this great module!

    I created a test-extension. Everything in the backend is working fine.

    The frontName of my extension in etc/config.xml is contactpersons, but http://mymagento/contactpersons/ gives me a 404. Do I miss something?

    1. I don't know if you are missing something. Try clearing the cache.
      If you used uppercase letters it the entity names it won't work. This is a bug I found this week. It will be fixed in version 1.5.
      If nothing works send me the xml located in var/modulecreator/package at the e-mail address you find in the source code of the module creator extension and I will investigate.


  12. Great extension! Congratulations!

    One question. When creating an entity, i see that i can create a web store field. But is there a way to create a view store field??

    Is very common to create differentes store view in multilingual magentos, so this should be used to create multilingual custom records using your extension.

    Thanks for your work!

    1. Thanks Pablo.
      At this moment the Module Creator does not support store view fields. Even the 'website' type attribute has nothing to do with the websites themselves. Is more like a simple dropdown with some values. It has no logic behind it. But....
      In version 1.5 of the ModuleCreator I will include a website selector similar to the one used in the CMS pages or static blocks by default for all the entities.
      I hope I will release v1.5 in the next 2 weeks.

  13. Hi, first off thank you for putting this out there. I do seem to have hit a steep learning curve on this. I really want to create a custom report using this extension, but not sure how to go about.

    The creation of the skeleton is great work, but now I am a little lost. Is it possible to create a custom report through this module? All I really want is to create a report that pulls the ordernr/sku/qty/cost and total sales price.

    That way I can calculate profit on a per order basis.

    1. The Module creator does not do what you need. It's not its purpose. It can only (very easily) create new entities and (very easily) link them between each other and with the products. I guess I have to write that documentation I've been avoiding for some time to make it clear what it does and what it doesn't do.


  14. Using Behaves as tree

    Are experiencing the following error on frontend

    Fatal error: Call to a member function lookupStoreIds () on a non-object in /Block/Agenda/List.php on line 85

    1. Thanks for the info, but in order to fix it I will need some more help. When you created your module, an xml file with the module name was created in var/modulecreator/package. Please send me that xml so I can have a better view of the issue. You can send it at the e-mail address you find in the code of the ModuleCreator.


    2. Oh. I found it. Stupid mistake. I forgot to add a placeholder in the source used to generate the module code. Go to the line specified in the error message and you should find something like this:
      $storeIds = Mage::getResourceSingleton('news/section')->lookupStoreIds($section->getId());

      Just replace 'news/section' with the identifier for you model ('moduleName/modelName'). I will fix this and release a new version as soon as possible. Thanks again for the tip.

    3. and replace

      $section->getId() with the variable name used in the code above. I assume is $agenda->getId()

  15. Thanks for the correction

    I would like to offer my congratulations, I found your module very fantastic, make sure this is a huge contribution to the community magento

    Congratulations brother

  16. Hey, guys. Do you happen to such a install issue.

    install: Failed to open file /home/jimmy/magento/downloader/.cache/community/Ultimate_ModuleCreator-

    It's very strange. It seems that magento unable to un-tar the installer completely. But, if using the following command manually and then according to the readme_UMC.txt copy all app/* and skin/* to the target folder, everything will be OK.

    tar -zxvf ./Ultimate_ModuleCreator- -C ./Ultimate_ModuleCreator-

  17. Hi,
    thanks for your module creator. its very helpful!
    what i want to achieve is also a many-to-many relation such as:

    Link "many to many" with orders.

    Is it possible to do this with the creator?

    1. Sorry but it doesn't work for orders. and there is no plan to make it work like that in the near future. But feel free to fork it and modify it to fit your needs.

  18. Does it work for Magento version, or can you list out changes or put a new source for module creator for magento 1.8 & later versions ?

    1. In theory it should work for 1.8.x, but I haven't tested it on that version. I recommend you give this new version a try: https://github.com/tzyganu/UMC1.9. It is not yet in a final form but it will be soon enough. And I test this one on 1.8 also.

  19. Looking for advice... Installed great, setup was easy to understand, I set the creator to install the files for me, but I don't see any menu items for the new module I created. The files are all in place, but nothing is different on the menus. It is active as a module. Any ideas?
    and i have already cleared the cache and my compillation is disable also

    please help me

    1. Make sure you cleared the cache, and disabled the compilation (if enabled). Then check where you set the menu item when you created the module and look in the menu tree for that. If nothing comes up, please send me the module file ('var/modulecreator/package/[Namespace]_[Module].xml') so I can recreate the module and see if something is wrong. You will find my e-mail address in any file of the module creator.

  20. Its working Great,awesome work..(y)

    can u tell mee,how can i make seo friendly url's
    b'z now the module generating this url
    but i want my url to have "advertiser" instead of "storebrand_storebrand/storebrands"


    1. If you are using the latest version, then, when you create a module you should see a field in the 'General Information' tab called 'Frontend key'. You need to put there 'adveriser'. If you don't feel in that value it defaults to '[namespace]_[module]'. If you already created the module and made some changes to it and you don't want to recreated it, just edit the `config.xml` and look for the frontend router definition and change the value of the '' tag to 'adveriser'. If you chose to create url rewrites for at least one of your entities then you should have the file 'Controller/Router.php'. Open that and change the line '$request->setModuleName('storebrand_storebrand')' to '$request->setModuleName('advertiser')'. Clear the cache and you should be done.

  21. sorry,
    i have not selected url rewrites during module creation
    so i dun have Controller/Router.php' files in my directory
    any other way


    1. If you don't have url rewrites for any entity then skip this step. Modify only the config.xml file.

  22. i have changed the config.xml file
    and it worked
    thanx a lot

    but now its showing as
    is it possible to show only advertiser

    thanx again

    1. It's not possible from the module creator itself. You will need to write a custom router. Read this for more details: http://www.atwix.com/magento/create-custom-router/

  23. or can we change
    this to

    but on which file can we add store-brands

    1. Magento has a default routing system 'module/controller/action'. You cannot name the controller 'store-brands'. If you want something different from the default routing system, check the link I posted above. It will teach you how to create a custom router. This is not related to the module creator anymore. I've done all I could.

  24. ok thanks a lot..

    one last thing i want to ask
    i want to show the content of module to catalog page (ie list.phtml) file
    how can i use


    so that it display my content which is coming from the module


  25. If you added a your entity as a product attribute you should be able to get the entity name like this `$_product->getAttributeText('brand_attr')`. If you chose to link "many to many" your entity with the products, you can get the associated entities like this.

    $collection = Mage::getResourceModel('{{module}}/{{entity}}_collection')
    ->addFieldToFilter('status', 1)
    $collection->getSelect()->order('related_product.position', 'ASC');

  26. I have successfully created module. But when I am trying to upload in it is not showing in admin. Will you please give me instruction about installing module I have creating using your Ultimate Module Creator?

    1. Make sure you uploaded the files in the correct location. `app` folder from the extension archive goes over the `app` folder from magento. Same goes for other folders you might have (js, skin). Then clear the cache and disable the compilation if you have it enabled.

  27. Easylife is a very nice extension,even though i had problems .. so in configurable product when selected something from the dropdown, the custom options of that simple product would nto appear so i used this
    http://www.magentocommerce.com/magento-connect/simple-configurable-products.html extension
    for that. You extension helped me to display the options of the configurable products that are out of stock. Even though the ADD TO CART button does not work, you press it and it send me to the page of the single article ... COuld you help me make it work? or could i disable this button?

  28. Hi,

    Many thanks for developing very good module.

    I like your module.

    I have created module using module creator.

    My problem is it showing 2 menu.

    Please check attach image.

    Test2=>Test Singular

    I want Test2 only.

    -Thanks & Regards,