Monday, 2 February 2015

Basic Features of Magento

Magento provides all the features and tools to build, install an e-commerce website quickly.
  •  Analytics and Reporting - the script is integrated with Google Analytics and offers many different reports.
  • Product Browsing - multiple images for products, options for extensive reviews, wishlists and much more.
  • Catalog Browsing - easy navigation, advanced product filtering system, product comparison.
  • Catalog Management - inventory management, batch import and export of products, different tax rates per location, additional product attributes.
  • Customer Accounts - order status and history, e-mail and RSS feeds for products in the wishlist, newsletter subscription, default billing and shipping address.
  • Customer Service - enhanced features for customers’ accounts, Contact Us form, comprehensive order tracking and history, customizable order e-mails.
  • Order Management - create orders through admin area, create multiple invoices shipments and credit memos, call center order creation option.
  • Payment - different payment methods: credit cards, PayPal, Authorize.net, Google Checkout, checks, money orders, support of external payment modules like Cybersource, ePay, eWAY and many more.
  • Shipping - shipping to multiple addresses, flat rating shipping, supports UPS, UPS XML (account rates), FedEx (account rates), USPS and DHL.
  • Checkout - one page checkout, SSL support, checkout without having an account.
  • Search Engine Optimization - 100% Search Engine Friendly, Google SiteMap support.
  • International Support - multiple languages and currencies, list of allowed countries for registration, purchasing and shipping, localization.
  • Marketing Promotions and Tools - coupons, discounts and different promotion options.
  • Site Management - control of multiple web sites, multiple languages, tax rate with support for US and International markets, customizable outlook through templates.

Why use MAGENTO?

Magento was designed for those who need a flexible and full-rich ecommerce platform. This 100% open-source eCommerce solution is open for free download and allows users to design, set up, and run their own eCommerce stores as they want. However, using the program requires some basic knowledge of how it works and to run it properly need a designer/developer. Therefore, we decide to write the series of Magento Tutorial for Beginners that will give you basic insights about Magento as well as beginner tutorials regarding Magento themes, Magento templates, Magento modules, extensions and more.

What is Magento? Why use MAGENTO?

What is Magento? is it open-source software and free to download? Magento is an open source PHP was built with help programmers can create e-commerce sites. Magento was released on 31/3/2008 by Varien and it is developed on the basis of the Zend Framework. Magento is 100% free to download, you can get it here

MAGENTO COMMUNITY EDITION 1.9.1 IS NOW AVAILABLE FOR DOWNLOAD

We are pleased to report that Magento Community Edition 1.9.1 is available for download! It offers merchants a new set of features that help create compelling shopping experiences across all devices.

Magento Community Edition 1.9.1 includes the following new features:

  • Configurable swatches enable merchants to show off a range of product attributes, such as colors, fabrics, or sizes, using a visual approach that is easy for shoppers to consume. Swatches can be used on product detail, category, and search result pages, and in layered navigation to help boost conversion rates. And, when shoppers click on a swatch, the product image automatically updates, giving them quick access to details needed to proceed with their purchase.
  • An enhanced responsive design reference theme offers merchants a dramatically faster way to create mobile-optimized sites. The theme now includes new functionality, such as responsive default email templates, so customers can read order confirmation and account registration emails on any device. Additionally, it supports downloadable products, order histories, multi-address checkout, and more.
  • Better site performance and security, now that Magento Community Edition 1.9.1 works with MySQL 5.6 and PHP 5.5. MySQL 5.6 offers merchants improved site speed and scalability, reduced memory usage, and enhanced debugging tools, while PHP 5.5 provides security improvements and ensures merchants have continued access to PHP code updates.
  • Support for Google Universal Analytics, the new standard for Google Analytics, provides merchants with deeper customer insights and access to ongoing feature updates that will only be available on this new platform.
  • Over 70 enhancements, many made by members of the active Magento community, help improve a wide range of features.

How to write a custom extension?


  1. Always develop with error_reporting on.
  2. Always develop with isDeveloperMode set to true. Just add SetEnv MAGE_IS_DEVELOPER_MODE 1 to your httpd.conf file (or corresponding file for nginx or something else)
  3. If the extension is linked to a core functionality add the dependency in the declaration file <depends><Mage_Catalog /></depend>
  4. If the module is for community use, use community as codepool to give the developers the chance to override some classes without modifying the code directly
  5. Put your frontend design files in app/design/frontend/base/default to make them available for all themes.
  6. Put your admin design files in app/design/adminhtml/default/default and do not change the admin theme. I may want to change it in one of my modules.
  7. Prefix your layout file names and template folder name with the company name to make it easier to isolate them. easylife_articles.xml and app/design/.../easylife_articles
  8. Put your static resources (js, css, images) in a similar folder as the template files easylife_articles/images/doh.png
  9. Attach a simple text file with how to uninstall the extension: What files need to be removed, what tables need to be dropped, what config settings need to be removed from core_config_datatable.
  10. Do not write queries directly in models, blocks or helpers, use a resource model for that.
  11. Do not write queries using the table names directly Select * from sales_flat_order where .... Use a Zend_Select and transform the table names using ->getTable('sales/order').
  12. Use the base url to include js files in template. Wrong <script type="text/javascript" src="../js/some.js"></script>Right <script type="text/javascript" src="<?php echo Mage::getBaseUrl('js').'some.js'?>"></script>
  13. Do not rewrite classes unless is necessary. Use observers and if it's not possible use helper methods that receive as parameter and instance of a class that you wanted to override. Wrong: Override Mage_Catalog_Model_Product to add the method getProductActicles()Right. In your helper add getProductArticles(Mage_Catalog_Model_Product $product)
  14. If you override classes put a list of them in a readme.txt file
  15. Use the default admin path for the admin section of your module. Wrong admin url articles/adminhtml_articles/indexRight admin url admin/articles/index
  16. Add ACL for your admin sections. I may want to restrict access to some of the admins.
  17. Do not add an other js framework (jquery, mootools, ...) if it's not necessary. Write you code in prototype.
  18. Make you template html W3C valid (this is for OCD developers like myself).
  19. Do not put images in the media folder. Use skin. The media folder usually is not versioned and this makes it harder to move the website on different environments.
  20. Test you extension with flat catalog on and off. In order not to double the development time useChaos Monkey
  21. Test your extension with cache on and cache off.
  22. Avoid using uppercase letter in the module and class names. If not properly tested this may cause issues on different OS. This is more a recommendation, not a 'must'.
  23. Dispatch events in your code to make it easier for developers to alter the functionality.
  24. Follow the same coding standards that Magento uses and comment your code.
  25. [Edited] Do not use php short tags (<? $this->doSomething() ?>). Use full tags (<?php $this->doSomething()?>). Also don't use short echo tags, yet. (<?="D'oh";?>). Use (<?php echo "D'oh";?>)
  26. Translate your texts using $this->__ and add the locale translation file with your texts (app/local/en_US/Easylife_Articles.csv) at least for en_US language. Not all websites are build in English and the identification of texts to translate it's time consuming.
  27. If you sell an extension offer at least basic support. Or at least answer the support e-mails you receive.
  28. Do not make constant calls to your servers through your extension for licence validation. Once, at installation is more than enough (I don't like this approach either, but it's better than to make calls all the time). (Inspired by this question)
  29. Develop with the log activated and from time to time take a look at the var/log/system.log file. The errors listed here are not shown even with developer mode on. If there is at least one error you end up with a large log file after a few months of running the extension.
  30. If your extension affects the checkout process or the orders in some way, make sure it works with multi-shipping, or if it shouldn't work with multi-shipping, make sure it doesn't affect it.
  31. Do not replace the default Admin Notification bar (or feed URL). If I'm interested on what you have to offer I will subscribe to your newsletter. Let me see what Magento has to say. It's more important to me.
  32. If you encrypt your code files with Ioncube (or something else)...well...I just hate you and I hope your business goes bankrupt

Create Your Extension

Extensions may be developed for a variety of functional areas of Magento as well as for interfacing with 3rd party web applications. Below, we highlight several guidelines regarding creating your extension. More detailed information can be found in the downloadable development and style guidelines listed on this page. Pricing Prices should be accurate and reflect the fair market value of the extension. If the extension is offered on the developer’s site as well as on Magento Connect, no pricing discrepancy is allowed. Any free extension shall be available to download directly from Magento Connect. You may not use Magento Connect free extensions to market other products and services. Paid Extensions A paid extension for Magento Community, Magento Professional or Magento Enterprise must contain a direct link to the extension itself listed on Magento Connect. This page must include detailed information about the extension, including price, warranty, support, and contact information. Your company homepage or other products not related to this specific extension cannot serve as a direct link. Enterprise Extensions Developers who are members of Magento’s Partner Groups, Solutions Partners or Industry Partners, may designate their extensions as “Enterprise Edition” extensions. In you are not a Partner, you may not use the word “Enterprise” or “EE” in your extension name, nor may you include any reference to Enterprise Level or Magento Enterprise. To learn about the Magento Partner Programs, click here. Use of Magento Logo in your Extension Images You can use a small Magento Logo on your extension icon, but it must be absolutely clear that the extension was not developed by Magento. Naming Your Extension Do not use the word Magento in your extension title, domain name or user name. Sub domain or /directory may include the word Magento. Extension Packaging Each submitted Magento extension needs to be packaged prior to submission. Installing Extension Installing and uninstalling procedures can be found in the Extension Guidelines including common installation errors and managing extensions. Approval Process During the approval process, developers should track the status of their submitted extensions in their Magento account. Once you have submitted your extension, your extension status will change to Submitted. Once reviewed, you will receive an email notification regarding the status of your extension. If you have submitted your extension and it is listed as Not Approved this means there was a problem with your extension. The majority of extensions listed as Not Approved happen due to the extension not being packaged correctly or meeting the Design Guidelines. If your extension meets all the guidelines and is listed as Not Approved, you may contact the Magento Conenct team at connect@magento.com to further discuss the issue. General Magento Connect is designed as an extension marketplace, not as a general directory of complimentary products and services. We do not allow the selling of services related or unrelated to Magento products.