Monday, 9 July 2012

Difference Between Magento Community and Enterprice Edition

Magento is now offered in 2 editions:
  • The free open source Community Edition
  • The paid-for Enterprise Edition
Both are based on the same Magento Core code, which will be kept in parallel ongoing, The differences with the Enterprise Edition break down into 2 categories:
  • The support for the code
  • Additional plug-ins and modules that are not available in the Community Edition

Support for the Code



-> The Enterprise Edition comes with a warranty and a service level agreement. If you have a problem with the core code (not plug-ins you’ve installed yourself, or your own templates, and you mustn’t change the core code) Varien will help you solve the problem. They prioritise the support depending on business impact to you, so if you’re losing money because the core is broken, they will respond faster than if it’s something not working in Chrome or Safari, for example. This isn’t the same as a service level agreement to keep your eCommerce operation running: retailers will need someone like Pod1 to offer them that, as Varien don’t operate the site for you, only provide support on their core code.

-> The Enterprise Edition (EE) includes support, a warranty and indemnification on the code, while the Community Edition (CE) does not include

-> Enterprise also comes with legal protection from a variety of issues, but the main ones seem to be about intellectual property. If someone was to take legal action against a retailer or an implementer like Pod1, arguing that the code in Magento belonged to them, Varien would protect us if we’d signed up for the Enterprise Edition. I don’t personally see the indemnity protection as being all that valuable, to be honest, as Varien’s open source license would already give us a reason to pass on liability if something like this did happen. The indemnity won’t cover you for useful things like loss of personal data about clients, or lost revenue because the code didn’t work.
Varien says fixes to the code will be made first in Enterprise, then rolled out to Community.
-> Finally, Varien are pursuing PCI compliance for the Enterprise Edition, under the PA-DSS scheme, which will mean that the application itself will be PCI compliant. This is different from what Pod1 is pursuing on PCI, which is making our implementations (hosting plus procedures plus code) compliant. PA-DSS would be very useful to Pod1 and its clients, and it’s an important part of our PCI strategy.



Additional Modules

There are some interesting additional modules in the Enterprise Edition:

  • Private sales, which allows retailers to restrict access to stores and offers to selected customers, and to manage the launch and termination of private sales.
  • In Magento CE it contains 300 to 360 tables only for different version,but in Magento EE  it contains 400 and above tables
  • Access to the back-end can be controlled at the website or store level, where in the Community Edition you can only restrict access at the function / module level. This is very useful for multi-store Magento installations.
  • The ability to merge and combine content from one store with another, and to use this facility to create a content staging environment. Instead of having 2 instances of Magento (as we do with some clients at present) one for the next catalog, one for the current catalog, you could do all this in one installation, which is a very interesting development, especially for larger retailers.
  • Compare to CE ,EE is faster because of jquery
  • A full audit trail of all admin actions. Very useful.
  • Gift card and store card functionality which allows electronic gift cards to be sold and used on Magento stores.
  • Store credit functions, for example allowing a contact centre to make an ex gratia payment to a shopper in the event of a complaint.
  • Enhanced security in line with PCI recommendations, with things like password expiry for administrators.
  • In sales tab in EE admin side tab it contains additional RMA tab
  • And it also needed Rule bases product relationship
  • In that EE Default Banner module is inbuilt
  • Automated email reminder rule is added in promotion tab for Email transactions
These features all look interesting and potentially useful, and I think we can expect the list to continue to grow. The idea is that ultimately everything ends up in the Community Edition, but that Enterprise will always be ahead and the most up to date version you can get.

Friday, 6 July 2012

Meta data in magento in header part for Improve keywords in google search

Add this coding in head.phtml page

<?php if (Mage::registry('current_product')) : ?>
        <meta http-equiv="Content-Type" content="<?php echo $this->getContentType() ?>" />
        <title><?php echo Mage::registry('current_product')->getName().' ,'.Mage::registry('current_product')->getoemno().' ,'.Mage::registry('current_product')->getdescription(); ?> </title>
        <meta name = "description" Content = "<?php echo Mage::registry('current_product')->getdescription(); ?>" />
        <meta name = "oemno" Content = "<?php echo Mage::registry('current_product')->getoemno(); ?>" />
        <meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />
        <meta name="robots" content="<?php echo htmlspecialchars($this->getRobots()) ?>" />
<?php else : ?>
        <meta http-equiv="Content-Type" content="<?php echo $this->getContentType() ?>" />
        <title><?php echo $this->getTitle() ?></title>
        <meta name="description" content="<?php echo htmlspecialchars($this->getDescription()) ?>" />
        <meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />
        <meta name="robots" content="<?php echo htmlspecialchars($this->getRobots()) ?>" />
<?php endif; ?>
<!--<title><?php echo $this->getTitle() ?></title>
<meta http-equiv="Content-Type" content="<?php echo $this->getContentType() ?>" />
<meta name="description" content="<?php echo htmlspecialchars($this->getDescription()) ?>" />
<meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />
<meta name="robots" content="<?php echo htmlspecialchars($this->getRobots()) ?>" />
<meta name="Designer" content="WebAndPeople Magento design - http://webandpeople.com" /> -->
<link rel="icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />

Wednesday, 4 July 2012

To overcome the Problem in PHP

To overcome the Problem in PHP "<?=" instead of "<?php echo" in Coding


In php.ini on your server, change the status of short_open_tag from Off to ON

Thursday, 14 June 2012

Remove Index.php in magento

If you want to access your magento URL without index.php
for example:
http://domain.com/index.php/category
to
http://domain.com/category
then use the following steps

1) Login to admin section by using the URL
http://domain.com/index.php/admin

2) then go to “System >>  Configuration >>Web >> Search Engines Optimization”
Use Web Server Rewrites : YES

3) Go to “System >>  Configuration >>Web >>Secure”
Use secure URL Frontend: YES

4)Then create the .htaccess file under your the magento installed folder.
If the magento installed under document root ( /home/username/public_html) then add follogig rules into .htaccess file

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

and If the magento installed under /shop or directory then add the following rules into ” /home/username/public_html/shop/.htaccess ” file.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /shop/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /shop/index.php [L]
</IfModule>

sample coding for google checkout


<html>

<body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"   >
        </script>
<script type="text/javascript">
   

    /*
    Requires: PrototypeJS
    http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js
    */

    document.observe("dom:loaded", function() {
        $("theGoogleForm").onsubmit = function() {
            var itms = [];
            //get checkboxes with name=selections
            //use a different name for other checkbox groups in the theGoogleForm (if any)
            //You can extend this to handle multiple checkbox groups by omitting the name parameter for later evaluation.
            var checks = this.getInputs("checkbox", "selections");
            checks.each(function(c) {
                if (c.checked) {
                    var itm = $F(c).split("|");
                    itms.push({ "item_name": itm[0], "item_description": itm[1], "item_price": itm[2], "item_weight": itm[3] });
                }
            });
            //Change 2 to any number of "required checked items" you need.
            //Change validation as necessary, currently, user must select exactly 2 items
            if (itms.length == 2) {
                var x = 1;
                var tgf = $("theGoogleForm");
                //build the elements based on selections
                itms.each(function(i) {
                    tgf.appendChild(e("item_name_" + x, i.item_name));
                    tgf.appendChild(e("item_description_" + x, i.item_description));
                    tgf.appendChild(e("item_price_" + x, i.item_price));
                    tgf.appendChild(e("item_weight_" + x, i.item_weight));
                    tgf.appendChild(e("item_weight_unit_" + x, "LB"));
                    tgf.appendChild(e("item_currency_" + x, "USD"));
                    tgf.appendChild(e("item_quantity_" + x, "1"));
                    x++;
                });
                //evaluation test was met, send to Google Checkout
                return true;
            } else {
                //evaluation test was not met, prevent form submission
                alert("A selection of 2 coffee blends is needed.\nYou selected " + itms.length + " blends.");
                return false;
            }
        };
    }
    );

    function e() {
        return new Element("input", { name: arguments[0], value: arguments[1], type: "hidden" });
    };
</script>

<!-- Replace with your sandbox MID. Replace url and mid for production. -->

<form action="https://sandbox.google.com/checkout/api/checkout/v2/checkoutForm/Merchant/302986852433793"
            id="theGoogleForm" method="post" name="BB_BuyButtonForm">
            <p>
                PayCircuit Peet's Coffee Sale: Please select <b>any 2 blends</b> from this list</p>
            <ol>
                <li>
               
                    <!--
                    The value of each checkbox correspond to: item_name, item_description, item_price, item_weight fields.
                    Modify values as necessary, but do not change sequence (if you do you have to modify Javascript)
                    Values are delimited by pipe character |
                    //-->
                   
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|Major Dickason|8.99|1" />Major
                    Dickason</li>
                <li>
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|House Blend|7.99|1" />House
                    Blend</li>
                <li>
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|Seasonal Blend|9.99|1" />Seasonal
                    Blend</li>
                <li>
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|Decaf House Blend|8.99|1" />Decaf
                    House Blend</li>
                <li>
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|Decaf Major Dickason|8.99|1" />Decaf
                    Major Dickason</li>
                <li>
                    <input name="selections" type="checkbox" value="PayCircuit Coffees|Decaf Seasonal Blend|10.99|1" />Decaf
                    Seasonal Blend</li>
            </ol>
           
            <!-- No item fields are in static HTML. -->
            <!-- Item fields are dynamically created by Javascript based on checkbox choices -->
            <!-- Shipping fields below can also be removed if you prefer to use your profile settings -->
           
            <input name="_charset_" type="hidden" value="utf-8" />
            <input type="hidden" name="ship_method_name_1" value="USPS Priority Mail" />
            <input type="hidden" name="ship_method_price_1" value="4.95" />
            <input type="hidden" name="ship_method_currency_1" value="USD" />
            <input alt="" src="https://sandbox.google.com/checkout/buttons/buy.gif?merchant_id=302986852433793&w=117&h=48&style=white&variant=text&loc=en_US"
                type="image" />
</form>


</body>
</html>

Test card with name

Card
Type
Card
Number
Number
Characters



Master
Card
5105105105105100                                (16)
Characters
Master
Card
5555555555554444 (16)
Characters
Master
Card
4222222222222 (13)
Characters
VISA 4111111111111111 (16)
Characters
VISA 4012888888881881 (16)
Characters



American
Express
378282246310005 (15)
Characters
American
Express
371449635398431 (15)
Characters
Amex
Corporate
378734493671000 (15)
Characters
Dinners
Club
38520000023237 (14)
Characters
Dinners
Club
30569309025904 (14)
Characters



Discover 6011111111111117 (16)
Characters
Discover 6011000990139424 (16)
Characters
JCB 3530111333300000 (16)
Characters
JCB                         3566002020360505                         (16)
Characters


                                                                        




Test Credit Card
Numbers:
Visa: 4111-1111-1111-1111
MasterCard: 5431-1111-1111-1111
Amex: 341-1111-1111-1111
Discover: 6011-6011-6011-6611




Credit Card Prefix Numbers (security code) :
Visa:
13 or 16 numbers starting with 4
MasterCard:
16 numbers starting with 5
Discover:
16 numbers starting with 6011
AMEX:





Test Number Test Name Credit Card Numbers Additional Instructions
1 AVS Full Match AMEX: 342955624318368
Discover: 6011624665174125
MasterCard: 5120939736834980
Visa: 4116509050569147
Enter AVS+FULL as the value of the Name field and the first line of the Address field.
2 AVS Partial Match - Postal Code only AMEX: 344058488426266
Discover: 6011976857117225
MasterCard: 5123695007103193
Visa: 4116480559370132
Enter AVS+POSTAL as the value of the Name field and the first line of the Address field.
3 AVS Partial Match - Address only AMEX: 345672983453416
Discover: 6011750048255222
MasterCard: 5122415444933925
Visa: 4119692004990226
Enter AVS+ADDR as the value of the Name field and the first line of the Address field.
4 AVS No Match AMEX: 342135898797783
Discover: 6011587918359498
MasterCard: 5106447623213738
Visa: 4112296825756779
Enter AVS+NOMATCH as the value of the Name field and the first line of the Address field.
5 AVS Unsupported by Issuer AMEX: 347279493269015
Discover: 6011604410824034
MasterCard: 5152370491539153
Visa: 4112836497303994
Enter AVS+UNSUPPORTED as the value of the Name field and the first line of the Address field.
6 Credit Card Verification Number Match AMEX: 345796298727014
Discover: 6011648040903965
MasterCard: 5155659853141666
Visa: 4110716719147654
Enter CVV+MATCH as the value of the Name field and the first line of the Address field.
Enter any four-digit CVC code other than 0000, 5555 and 9999 for American Express. Enter any three-digit CVC code other than 000, 555 and 999 for Discover, MasterCard or Visa.
7 Credit Card Verification Number Unavailable AMEX: 342650299263839
Discover: 6011118186183608
MasterCard: 5199339067794810
Visa: 4112530021797363
Enter CVV+UNAVAILABLE as the value of the Name field and the first line of the Address field.
Enter 0000 as the four-digit CVC code for American Express. Enter 000 as the three-digit CVC code for Discover, MasterCard or Visa.
8 Credit Card Verification Number Error AMEX: 342781835011463
Discover: 6011789277338945
MasterCard: 5102881917494147
Visa: 4112653620165475
Enter CVV+ERROR as the value of the Name field and the first line of the Address field.
Enter 9999 as the four-digit CVC code for American Express. Enter 999 as the three-digit CVC code for Discover, MasterCard or Visa.
9 Credit Card Verification No Match AMEX: 342337649030528
Discover: 6011769851691760
MasterCard: 5155239927190195
Visa: 4113864427850982
Enter CVV+NOMATCH as the value of the Name field and the first line of the Address field.
Enter 5555 as the four-digit CVC code for American Express. Enter 555 as the three-digit CVC code for Discover, MasterCard or Visa.
10 Credit Card Authorization Successful AMEX: 348771682068975
Discover: 6011739196887563
MasterCard: 5184778657904478
Visa: 4119862760338320
Enter AUTH+OK as the value of the Name field and the first line of the Address field.
11 Credit Card Authorization Declined See special instructions below. Note: Please see the special instructions below for testing a failed credit card authorization.




Google checkout HTML Api

Google Checkout's HTML API (including BUY NOW Buttons) are easily extended with server-side code. This usually involves creating a shopping cart using server side script, and dynamically creating HTML that conforms to Google's HTML API.
But what if you don't have access to server-side resources? This working sample is one way of creating "dynamic fields" with Javascript that conform to Google's HTML API. This is not meant to be replacement for server-side code, and, as with all client-side code, will not work on browsers with Javascript disabled.
What this sandbox sample does:
  • Will use checkboxes to specify items from a list for checkout
  • An additional requirement of 2 (and only 2, min/max) books must be selected from the list. You can modify this rule to anything you prefer.
  • Allows you to do (a little) more than just static HTML with BUY Now or HTML API. This sample turns a "simple" BUY NOW button, into a not-so-simple implementation of Google Checkout!
Note: There is an issue/bug with this sample when the user navigates back from Google Checkout without clicking "Edit Cart" (i.e. browser back arrow).
PayCircuit Peet's Coffee Sale: Please select any 2 blends from this list
  1. Major Dickason
  2. House Blend
  3. Seasonal Blend
  4. Decaf House Blend
  5. Decaf Major Dickason
  6. Decaf Seasonal Blend

Source/Reference

JavaScript

<script type="text/javascript">
    /*
    Requires: PrototypeJS
    http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js
    */

    document.observe("dom:loaded", function() {
        $("theGoogleForm").onsubmit = function() {
            var itms = [];
            //get checkboxes with name=selections
            //use a different name for other checkbox groups in the theGoogleForm (if any)
            //You can extend this to handle multiple checkbox groups by omitting the name parameter for later evaluation.
            var checks = this.getInputs("checkbox", "selections");
            checks.each(function(c) {
                if (c.checked) {
                    var itm = $F(c).split("|");
                    itms.push({ "item_name": itm[0], "item_description": itm[1], "item_price": itm[2], "item_weight": itm[3] });
                }
            });
            //Change 2 to any number of "required checked items" you need.
            //Change validation as necessary, currently, user must select exactly 2 items
            if (itms.length == 2) {
                var x = 1;
                var tgf = $("theGoogleForm");
                //build the elements based on selections
                itms.each(function(i) {
                    tgf.appendChild(e("item_name_" + x, i.item_name));
                    tgf.appendChild(e("item_description_" + x, i.item_description));
                    tgf.appendChild(e("item_price_" + x, i.item_price));
                    tgf.appendChild(e("item_weight_" + x, i.item_weight));
                    tgf.appendChild(e("item_weight_unit_" + x, "LB"));
                    tgf.appendChild(e("item_currency_" + x, "USD"));
                    tgf.appendChild(e("item_quantity_" + x, "1"));
                    x++;
                });
                //evaluation test was met, send to Google Checkout
                return true;
            } else {
                //evaluation test was not met, prevent form submission
                alert("A selection of 2 coffee blends is needed.\nYou selected " + itms.length + " blends.");
                return false;
            }
        };
    }
    );

    function e() {
        return new Element("input", { name: arguments[0], value: arguments[1], type: "hidden" });
    };
</script>

Tuesday, 12 June 2012

How to Add Custom Field in Billing & Shipping addr

How to Add Custom Field in the Billing and Shipping Address of Onepage Checkout in Magento

I have created the module for adding the new custom field in the Billing and Shipping address of the Onepage checkout. All the code of the module is given below.

Step: – 1
Add Custom Field into Billing Address tab of the Onepage Checkout in Frontend.
app\design\frontend\[Package_name]\[Theme_name]\template\checkout\onepage\billing.phtml

Code:
<li class="wide">
    <label for="billing:jobtitle"><?php echo $this->__('Job Title') ?></label>
    <div class="input-box">
    <input type="text" id="billing:jobtitle" name="billing[jobtitle]" value="<?php echo $this->htmlEscape($this->getAddress()->getJobtitle()) ?>" title="<?php echo $this->__('Job Title') ?>" class="input-text" />
    </div>
    </li>


Step: – 2
Add Custom Field into Shipping Address tab of the Onepage Checkout in Frontend.
app\design\frontend\[Package_name]\[Theme_name]\template\checkout\onepage\shipping.phtml

Code:
<li class="wide">
    <label for="shipping:jobtitle"><?php echo $this->__('Job Title') ?></label>
    <div class="input-box">
    <input type="text" id="shipping:jobtitle" name="shipping[jobtitle]" value="<?php echo $this->htmlEscape($this->getAddress()->getJobtitle()) ?>" title="<?php echo $this->__('Job Title') ?>" class="input-text" onchange="shipping.setSameAsBilling(false);" />
    </div>
    </li>



Step: – 3
Add Custom Field into Customer Address Edit tab in Frontend.
app\design\frontend\[Package_name]\[Theme_name]\template\customer\address\edit.phtml


Code:
<li class="wide">
    <label for="jobtitle"><?php echo $this->__('Job Title') ?></label>
    <div class="input-box">
    <input type="text" name="jobtitle" id="jobtitle" title="<?php echo $this->__('Job Title') ?>" value="<?php echo $this->htmlEscape($this->getAddress()->getJobtitle()) ?>" class="input-text" />
    </div>
    </li>



Step: – 4
I have made some changes to the Address Templates in Magento Admin. if you are using Magento Version 1.3.2.4 then you have to made changes in the following file.

app/code/core/Mage/Customer/etc/config.xml

and if you are using Magento Upper Version than 1.3.2.4 then you can chage from the Admin panel of the Magento as given following path.

System->Configuration->Customers->Customer Configurations->Address Templates

Add following code in the “Text” Textarea.

Code:
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}
     {{depend company}}{{var company}}{{/depend}}
     {{depend jobtitle}}{{var jobtitle}}{{/depend}}
     {{if street1}}{{var street1}}
     {{/if}}
     {{depend street2}}{{var street2}}{{/depend}}
     {{depend street3}}{{var street3}}{{/depend}}
     {{depend street4}}{{var street4}}{{/depend}}
     {{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}
     {{var country}}
     T: {{var telephone}}
     {{depend fax}}F: {{var fax}}{{/depend}}



Step: – 5
I have made some changes to the Address Templates in Magento Admin. if you are using Magento Version 1.3.2.4 then you have to made changes in the following file.

app/code/core/Mage/Customer/etc/config.xml

and if you are using Magento Upper Version than 1.3.2.4 then you can chage from the Admin panel of the Magento as given following path.

System->Configuration->Customers->Customer Configurations->Address Templates

Add following code in the “HTML” Textarea.

Code:
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}<br/>
    {{depend company}}{{var company}}<br />{{/depend}}
    {{depend jobtitle}}{{var jobtitle}}<br />{{/depend}}
    {{if street1}}{{var street1}}<br />{{/if}}
    {{depend street2}}{{var street2}}<br />{{/depend}}
    {{depend street3}}{{var street3}}<br />{{/depend}}
    {{depend street4}}{{var street4}}<br />{{/depend}}
    {{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}<br/>
    {{var country}}<br/>
    {{depend telephone}}T: {{var telephone}}{{/depend}}
    {{depend fax}}<br/>F: {{var fax}}{{/depend}}



Step: – 6
I have made some changes to the Address Templates in Magento Admin. if you are using Magento Version 1.3.2.4 then you have to made changes in the following file.

app/code/core/Mage/Customer/etc/config.xml

and if you are using Magento Upper Version than 1.3.2.4 then you can chage from the Admin panel of the Magento as given following path.

System->Configuration->Customers->Customer Configurations->Address Templates

Add following code in the “PDF” Textarea.

Code:
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}|
    {{depend company}}{{var company}}|{{/depend}}
    {{depend jobtitle}}{{var jobtitle}}|{{/depend}}
    {{if street1}}{{var street1}}
    {{/if}}
    {{depend street2}}{{var street2}}|{{/depend}}
    {{depend street3}}{{var street3}}|{{/depend}}
    {{depend street4}}{{var street4}}|{{/depend}}
    {{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}|
    {{var country}}|
    {{depend telephone}}T: {{var telephone}}{{/depend}}|
    {{depend fax}}<br />F: {{var fax}}{{/depend}}|


I have created the separate module for adding Custom Field into Billing and Shipping Address in Frontend and Backend of the Magento Store.

Step: – 7
app\etc\modules\Tdg_All.xml

First of all create file with above given name and put following code into that file.

Code:
<?xml version="1.0" encoding="UTF-8"?>
    <config>
     <modules>
     <Tdg_Check>
     <active>true</active>
     <codePool>local</codePool>
     </Tdg_Check>
     </modules>
    </config>



Step: – 8
app\code\local\Tdg\Check\etc\ config.xml


Code:
<?xml version="1.0" encoding="UTF-8"?>
    <config>
     <modules>
     <Tdg_Check>
     <version>1.0.0</version>
     </Tdg_Check>
     </modules>
     <admin>
     <fieldsets>
     <customer_dataflow>
     <jobtitle><billing>1</billing><shipping>1</shipping></jobtitle>
     </customer_dataflow>
     </fieldsets>
     </admin>
     <global>
     <models>
     <check>
     <class>Tdg_Check_Model</class>
     </check>
     </models>
     <resources>
     <check_setup>
     <setup>
     <module>Tdg_Check</module>
     </setup>
     <connection>
     <use>core_setup</use>
     </connection>
     </check_setup>
     <check_write>
     <connection>
     <use>core_write</use>
     </connection>
     </check_write>
     <check_read>
     <connection>
     <use>core_read</use>
     </connection>
     </check_read>
     </resources>
     <fieldsets>
     <sales_copy_order_billing_address>
     <jobtitle><to_order>*</to_order></jobtitle>
     </sales_copy_order_billing_address>
     <sales_copy_order_shipping_address>
     <jobtitle><to_order>*</to_order></jobtitle>
     </sales_copy_order_shipping_address>
     <sales_convert_quote_address>
     <jobtitle><to_order_address>*</to_order_address><to_customer_address>*</to_customer_address></jobtitle>
     </sales_convert_quote_address>
     <sales_convert_order_address>
     <jobtitle><to_quote_address>*</to_quote_address></jobtitle>
     </sales_convert_order_address>
     <customer_address>
     <jobtitle><to_quote_address>*</to_quote_address></jobtitle>
     </customer_address>
     <checkout_onepage_billing>
     <jobtitle><to_customer>*</to_customer></jobtitle>
     </checkout_onepage_billing>
     </fieldsets>
     </global>
    </config>


Step: – 9
app\code\local\Tdg\Check\sql\check_setup\ mysql4-install-1.0.0.php


Code:
<?php
     /* @var $installer Mage_Customer_Model_Entity_Setup */
     $installer = $this;
     $installer->startSetup();
     /* @var $addressHelper Mage_Customer_Helper_Address */
     $addressHelper = Mage::helper('customer/address');
     $store = Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID);
    
     /* @var $eavConfig Mage_Eav_Model_Config */
     $eavConfig = Mage::getSingleton('eav/config');
    
     // update customer address user defined attributes data
     $attributes = array(
     'jobtitle' => array(
     'label' => 'Job Title',
     'backend_type' => 'varchar',
     'frontend_input' => 'text',
     'is_user_defined' => 1,
     'is_system' => 0,
     'is_visible' => 1,
     'sort_order' => 140,
     'is_required' => 1,
     'multiline_count' => 0,
     'validate_rules' => array(
     'max_text_length' => 255,
     'min_text_length' => 1
     ),
     ),
     );
    
     foreach ($attributes as $attributeCode => $data) {
     $attribute = $eavConfig->getAttribute('customer_address', $attributeCode);
     $attribute->setWebsite($store->getWebsite());
     $attribute->addData($data);
     $usedInForms = array(
     'adminhtml_customer_address',
     'customer_address_edit',
     'customer_register_address'
     );
     $attribute->setData('used_in_forms', $usedInForms);
     $attribute->save();
     }
    
     $installer->run("
     ALTER TABLE {$this->getTable('sales_flat_quote_address')} ADD COLUMN `jobtitle` VARCHAR(255) CHARACTER SET utf8 DEFAULT NULL AFTER `fax`;
     ALTER TABLE {$this->getTable('sales_flat_order_address')} ADD COLUMN `jobtitle` VARCHAR(255) CHARACTER SET utf8 DEFAULT NULL AFTER `fax`;
     ");
     $installer->endSetup();
    ?>


Custom tab in magento customer account page


The Customer edit page in the admin panel gives details about the customers account information,address,orders etc.

In some scenarios we may need to show our custom module contents related to the customer in a additional tab. To achieve this functionality we need to create a custom module and add our tab.

Step 1: We start with our config.xml file. In this file we are specifying an adminhtml xml layout file and a Block class for our custom module.

app/code/local/Mydons/etc/config.xml


<config>
<modules>
<Mydons_Customertab>
<version>0.1.0</version>
</Mydons_Customertab>
</modules>
<adminhtml>
<layout>
<updates>
<customertab>
<file>customertab.xml</file>
</customertab>
</updates>
</layout>
</adminhtml>
<global>
<blocks>
<customertab>
<class>Mydons_Customertab_Block</class>
</customertab>
</blocks>
</global>
</config>


Step 2: We need to create an adminhtml block class to show our new custom tab. This class
should extend the Mage_Adminhtml_Block_Template class and implement Mage_Adminhtml_Block_Widget_Tab_Interface to
get the tab related methods.

app/code/local/Mydons/Customertab/Block/Adminhtml/Customer/Edit/Tab/Action.php



<?php

/**
* Adminhtml customer action tab
*
*/
class Mydons_Customertab_Block_Adminhtml_Customer_Edit_Tab_Action
extends Mage_Adminhtml_Block_Template
implements Mage_Adminhtml_Block_Widget_Tab_Interface
{

public function __construct()
{
$this->setTemplate('customertab/action.phtml');

}

public function getCustomtabInfo(){

$customer = Mage::registry('current_customer');
$customtab='My Custom tab Action Contents Here';
return $customtab;
}

/**
* Return Tab label
*
* @return string
*/
public function getTabLabel()
{
return $this->__('Action Center');
}

/**
* Return Tab title
*
* @return string
*/
public function getTabTitle()
{
return $this->__('Action Tab');
}

/**
* Can show tab in tabs
*
* @return boolean
*/
public function canShowTab()
{
$customer = Mage::registry('current_customer');
return (bool)$customer->getId();
}

/**
* Tab is hidden
*
* @return boolean
*/
public function isHidden()
{
return false;
}

/**
* Defines after which tab, this tab should be rendered
*
* @return string
*/
public function getAfter()
{
return 'tags';
}

}
?>




Step 3: Now we need to create a layout file for our adminhtml.

app/design/adminhtml/default/default/layout/customertab.xml


<layout version="0.1.0">
<adminhtml_customer_edit>
<reference name="customer_edit_tabs">
<action method="addTab"><name>customer_edit_tab_action</name><block>customertab/adminhtml_customer_edit_tab_action</block></acti on>
</reference>
</adminhtml_customer_edit>
</layout>

Step 4: After creating the layout create adminthtml template file as shown below

app/design/adminhtml/default/default/template/customertab/action.phtml



<div id="customer_info_tabs_customer_edit_tab_action_content">
<div class="entry-edit">
<div class="entry-edit-head">
<h4 class="icon-head head-edit-form fieldset-legend">Action Tab</h4>
</div>
<div id="group_fields4" class="fieldset fieldset-wide">
<div class="hor-scroll">
<table class="form-list" cellspacing="0">
<tbody>
<tr>
<td>Custom Action Tab Contents Here</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>

Step 5: Finally we need to activate our module Activation file
app/etc/modules/Mydons_Customertab.xml.

<config>
<modules>
<Mydons_Customertab>
<active>true</active>
<codepool>local</codepool>
</Mydons_Customertab>
</modules>
</config>


the new tab display on click customer information -> new new tab display last



How to add custom tab on customer left navigation tab through custom module


 Way to create a tab in customer tab in magento


First to create custom module,
Then to create the yourmodule.xml file on
path:app/design/adminhtml/default/default/layout
<layout version="0.1.0">
    <adminhtml_customer_edit>
        <reference name="customer_edit_tabs">
            <action method="addTab"><name>custmotab</name><block>yourmodulename/adminhtml_yourmodulename</block></action>
        </reference>
   </adminhtml_customer_edit>
</layout>

After then go to the yourmodulename.php file
Path:app/code/local/yournamespace/yourmodulename/Block/Adminhtml
implements the following class
Mage_Adminhtml_Block_Widget_Tab_Interface
Then to add following code after __construct() function
public function getTabLabel()
    {
        return $this->__('yourcustomtabname');
    }
public function getTabTitle()
    {
        return $this->__('yourcustomtabtitle');
    }

Tuesday, 5 June 2012

Some Important Functions: getModel(), getData(), getSingleton()

We will be looking into some important methods used frequently in Magento like getModel(), getData(), getSingleton()..
getModel() (To create an instance of a Model class) :
The getModel() function is used to create an instance of a Model class. For example
1$Product = Mage::getModel(’catalog/product’);
would basically tell Magento to create an instance of Mage_Catalog_Model_Product class. (ie. Mage/Catalog/Model/Product.php). If we now echo the get_class($Product) we would get the Mage_Catalog_Model_Product text displayed in our browser. You can use all methods defined in Product.php. Some useful methods include getName, getPrice, getTypeId, getStatus which we can execute like:
1echo ‘Product name: ‘. $Product->getName();
2echo ‘Product price: ‘ . $Product->getPrice();
However, the above code wont give you anything. You will not see any price displayed in the browser. This is because you haven’t loaded the product using load() method. We have to use the load method to load some data into our newly instantiated object.
1$Product->load(53);
where 53 is the product id.
getData() (To get relevant data from the object instance)
This function is used to get relevant data from the object instance. Let’s say you want to retrieve the SKU value. You can use some other method for that like getSku() method that needs to be executed on object of Product type or you can:
1echo $Product->getData(’sku’);
getData can be executed with or without any parameters passed to it. If you execute it without any parameters you get the array variable as a result. You can’t directly echo the array. You would have to map it to some field, like echo $arayVar['someField']. What are all the available fields? To find out you can do something like
1echo ‘<pre>’;
2print_r($Product->getData());
3echo ‘</pre>’;
You can get the sku of the product by:
1$ProductData = $Product->getData();
2echo $ProductData->sku;
or:
1echo $Product->getData(’sku’)
Another example:
1$ProductData = $Product->getData();
2$StockItem = $ProductData->stock_item;
Now your $StockItem variable is a object of type Mage_CatalogInventory_Model_Stock_Item and you can go ahead and use the same principle used until this point to find it’s methods and the data it holds.
First use the getModel to create the instance of object then you use getData to retrieve the data from that instance.
getSingleton():
One of the important architectural feature is it’s Singleton design pattern. In short, Singleton design pattern ensures a class has only one instance. Therefore one should provide a global point of access to that single instance of a class.
So when you are using getSingleton you are calling already instantiated object. So if you get the empty array as a result, it means the object is empty. Only the blueprint is there, but nothing is loaded in it.
Registry:

We had told that Magento provides global point of access to single instance of classes. How does Magento do it ?. This is done by using an array called registry in Mage.php.
Checkout the Mage.php file and you will see an array variable called _registry.
In order to provide global point of access for an instance of a class we must register the object into the registry array by using a function called register. For example:
1Mage::register(’events’, new Varien_Event_Collection());
2Mage::register(’config’, new Mage_Core_Model_Config());
Here is the code of the register() function:
1public static function register($key, $value, $graceful = false)
2{
3if(isset(self::$_registry[$key])) {
4if ($graceful) {
5return;
6}
7Mage::throwException(’Mage registry key “‘.$key.’” already exists’);
8}
9self::$_registry[$key] = $value;}
Basically what it does it registers an object with name as $key and the instance as $value into the registry array. You can also unregister an object using the unregister() function.
Whenever we want to call an object from the registry we use the registry() function. For example in the getConfig() method:
1public static function getConfig()
2{
3return Mage::registry(’config’);
4}
Previously we had registered an  instance of Mage_Core_Model_Config as ‘config’. The getConfig() function returns that instance. Here is the code for registry() function:
1public static function registry($key)
2{
3if (isset(self::$_registry[$key])) {
4return self::$_registry[$key];
5}
6return null;
7}
Analyzing the getModel() and getSingleton() code:
The getModel() and getSingleton() functions works by using this registry. Here is the code for the getModel() function:
1public static function getModel($modelClass=”, $arguments=array())
2{
3return Mage::getConfig()->getModelInstance($modelClass, $arguments);
4}
Basically it gets the Config object (This object is formed by parsing all the config.xml files, so it contains all config details of all moules) and then makes an instance of the model that is specified by the $modelClass argument.(for example if $modelClass is ‘catalog/product it creates an instance of Mage_Catalog_Model_Product)
Now take a look at the getSingleton Method:
1public static function getSingleton($modelClass=”, array $arguments=array())
2{
3$registryKey = ‘_singleton/’.$modelClass;
4if (!Mage::registry($registryKey)) {
5Mage::register($registryKey, Mage::getModel($modelClass, $arguments));
6}
7return Mage::registry($registryKey);
8}
Basically it checks wheter an instance of that class is already existing, if so return that instance else create a new instance and register it as ‘_singleton/$modelClass’.

Tuesday, 29 May 2012

Magento coding for delete all sales order

 Delete all sales order in magento DB



<?php

if (version_compare(phpversion(), '5.2.0', '<')===true) {
    echo  '<div style="font:12px/1.35em arial, helvetica, sans-serif;"><div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"><h3 style="margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;">Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href="http://www.magentocommerce.com/install" target="">Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>';
    exit;
}

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$mageFilename = 'app/Mage.php';

if (!file_exists($mageFilename)) {
    echo $mageFilename." was not found";
    exit;
}

require_once $mageFilename;

Mage::app();

$executionPath = null;

/*
 * determine Magento Edition
 */
if (file_exists('LICENSE_EE.txt')) {
    $edition = 'EE';
}elseif (file_exists('LICENSE_PRO.html')) {
    $edition = 'PE';
} else {
    $edition = 'CE';
}

if(($edition=='EE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true)
        || ($edition=='PE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true)
        || ($edition=='CE' && version_compare(Mage::getVersion(), '1.6.0.0.', '<')===true)
  ){
   $executionPath = 'old';
} else {
   $executionPath = 'new';
}

$xpathEntity = 'global/models/sales_entity/entities//table';

if ($executionPath == 'old') {
    $xpathResource = 'global/models/sales_mysql4/entities//table';
} else {
    $xpathResource = 'global/models/sales_resource/entities//table';
}

$salesEntitiesConf = array_merge(
    Mage::getSingleton('core/config')->init()->getXpath($xpathEntity),
    Mage::getSingleton('core/config')->init()->getXpath($xpathResource)
);

$resource = Mage::getSingleton('core/resource');
$connection = $resource->getConnection('core_write');

/*
 * If you want delete System/Order Statuses (Status and State) you
 * should comments below lines (46-51)
 */
$skipTables = array (
        $resource->getTableName('sales_order_status'),
        $resource->getTableName('sales_order_status_state'),
        $resource->getTableName('sales_order_status_label')
    );
$salesEntitiesConf = array_diff($salesEntitiesConf, $skipTables);

/*

Multiple RDBMS Support in Magento CE 1.6+ / EE 1.11+

http://www.magentocommerce.com/images/uploads/RDBMS_Guide2.pdf

2.2. Adapters:

... The new Varien_DB_Adapter_Interface was added to sign a contract that all
developed adapters must execute in order to get Magento working on an actual
database. The interface describes the list of methods and constants that can be used by resource models...

Used below in the loop:

 * If $executionPath == 'old'
    * Varien_Db_Adapter_Pdo_Mysql::showTableStatus()
    * Varien_Db_Adapter_Pdo_Mysql::truncate()
 * Else
    * Varien_Db_Adapter_Interface::isTableExists()
    * Varien_Db_Adapter_Interface::truncateTable()

*/

while ($table = current($salesEntitiesConf) ){
    $table = $resource->getTableName($table);

    if ($executionPath == 'old') {
        $isTableExists = $connection->showTableStatus($table);
    } else {
        $isTableExists = $connection->isTableExists($table);
    }
    if ($isTableExists) {
        try {
            if ($executionPath == 'old') {
                $connection->truncate($table);
            } else {
                $connection->truncateTable($table);
            }

            printf('Successfully truncated the <i style="color:green;">%s</i> table.<br />', $table);
        } catch(Exception $e) {
            printf('Error <i style="color:red;">%s</i> occurred truncating the <i style="color:red;">%s</i> table.<br />', $e->getMessage(), $table);
        }
    }

    next($salesEntitiesConf);
}

exit('All done...'); ?>

Friday, 27 April 2012

show and hiddent top up menu in jquery

<html>
<head>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".flip").click(function(){
    $(".panel").slideToggle("slow");
  });
});
</script>

<style type="text/css">
div.panel,p.flip
{
margin:0px;
padding:5px;
text-align:center;
background:#e5eecc;
border:solid 1px #c3c3c3;
}
div.panel
{
height:120px;
display:none;
}
</style>
</head>

<body>

<div class="panel">
<p>Because time is valuable, we deliver quick and easy learning.</p>
<p>At W3Schools, you can study everything you need to learn, in an accessible and handy format.</p>
</div>

<p class="flip">Show/Hide Panel</p>

</body>
</html>

Thursday, 26 April 2012

Magento Free Modules

Thanks to : http://visionwidget.com/inspiration/web/374-free-magento-extensions.html


Magento is a popular open source platform to built your ecommerce website. It is based on Zend Framework and has a very flexible architecture. Although it is much younger than many of its competitors, Magento has a large community of users.
Developers can easily built plugins or templates for Magento, which makes it more and more popular among open source ecommerce solutions. here are loads of great extensions for Magento to help take your internet store to the next level.
1. Remerce CMS Meta Robots Remerce CMS Meta Robots
Set the Robots Meta Tags for Cms pages
This module add the option to set the Robots Meta for CMS pages.

Go to CMS =>Manage Pages

Select a page and go to the tab "Meta Data" Under Robots you can set the Robots Meta Tag

2. Fooman Google Analytics Plus Fooman Google Analytics Plus
This is a beta release - please report how this extensions works for you.

Current improvements:

    * * Track every individual page - including sections retrieved via AJAX during one-page-checkout
    * * Track the actual typed in keywords by your user (this might not yet work due to a bug in Magento itself)
    * * Temporary solution to make your Magento install SEO friendlier via robots.txt

3. Canonical URL's for Magento  Canonical URL's for Magento
This extension adds the new canonical links to the head of your Magento pages, for a more in-depth explanation, see Yoast.com. More about Magento SEO in general at Yoast.

Note
For the new way the module gets the canonical URL at product pages it is important that Mage::getSingleton('catalog/url')->refreshRewrites(); is executed. Normally this will happen with the install of the module but please check the canonical url at your product page. If you get a 404 for this url change change the value of "add category to product url" at your backend, save, change it back and save again. Now the url shouldn't give a 404 error.

4. Advanced Sitemap  Advanced Sitemap
how a list of product from current store

0.1.4
* Add parent category

CHANGES:
->U app/design/frontend/default/default/template/catalog/product/productlist/category.phtml

5. Blog  Blog
A blog can be a great way for an online store to connect with customers, and this Magento extension makes it easy for you to incorporate a blog into your internet shop.  Are you already using the Monk_Blog extension for your store’s blog?  Well, Blog is compatible with Monk_Blog, so this Magento extension can integrate all of the information from your old blog into your new one (make sure you follow the directions closely).

6. Post Affiliate Pro Connector  Post Affiliate Pro Connector
An affiliate scheme can be a great way to increase your ecommerce site’s sales, and the Post Affiliate Pro Connector extension instantly integrates Post Affiliate Pro (PAP) into Magento.  This extension for Magento automatically handles click and sale affiliate tracking, tracks affiliate sales using Javascript or PHP API, accepts referrals to any page of your online store, and much more!

7. IW PayPal Standard Currencies  IW PayPal Standard Currencies
This Magento extension lets you choose any PayPal supported currency for your online store’s transaction currency and add new PayPal supported currencies to the PayPal Website Payments Standard payment method in your shop’s admin panel.  With the IW PayPal Standard Currencies extension, you can use any base currency for your online shop, allowing your store to have customers almost anywhere in the world.

8. J2T Points & Rewards J2T Points & Rewards
This module allow the customers do gather points on products they are buying.
The points can be redeemed for discount on their purchase.

Upon installing this module, you need to create a shopping cart promotion named 'points' and an attribute called 'reward_points'.

You can specify an amount of point for a product, or let the system do the job.
You can configure the module by updating the values in : System > Configuration > Reward Points.

9. Google Maps Store Locator  Google Maps Store Locator
To include the map in your CMS page/block use this snipped:
{{block type="core/template" template="unirgy/storelocator/map.phtml"}}

Copy to your theme and design the following interface files:
layout/ustorelocator.xml
template/unirgy/storelocator/map.phtml

If you are importing locations directly to database, go to this URL to fetch coordinates:
http://your.store.com/ustorelocator/adminhtml_location/updateEmptyGeoLocations

10. BouncingOrange TinyMCE (WYSIWYG)  BouncingOrange TinyMCE (WYSIWYG)
TinyMCE is fully configurable (without modifying any code file) in the administration configuration (System -> Configuration / Admin / WYSISYG Editor (TinyMCE)).

You can activate TinyMCE for the following textaera :
- Product Description
- Product Short Description
- CMS Page Content
- Static Block Content
- Category Description
- Newsletter Template

11. Fontis WYSIWYG Editor  Fontis WYSIWYG Editor
This extension gives you the option to enable a JavaScript WYSIWYG editor to specified admin pages. Currently available editors are: TinyMCE and FCKeditor.
For more information, including screenshots, version history and instructions on configuration and usage, please see the Fontis WYSIWYG Magento extension page.

12. Magento Live Chat  Magento Live Chat
This free module will provide LiveChat support in Magento.
It don’t depends third party platform
It don’t require to fill a form before start a conversation
It identify automatically registered user
It provide information about the current page of the customer
It can provide useful information about transformation rate
Conversation are archived and available forever

13. Fontis SecurePay  Fontis SecurePay
Please note that this extension uses the Australian SecurePay found at www.securepay.com.au.

Payments made with this payment module are processed through the SecureXML gateway.

For more information, including screenshots, version history and instructions on configuration and usage, please see the Fontis SecurePay Magento extension page.

14. Royal Mail Domestic and International Shipping  Royal Mail Domestic and International Shipping
Is your online store based in the UK?  If you sell tangible items to customers in the UK and beyond, then check out the Royal Mail Domestic and International Shipping extension for Magento.  This extension calculates the cost of sending items to a variety of different destinations using a range of various shipping methods.


15. Checkout Newsletter  Checkout Newsletter
A regular newsletter is a great way of telling your customers about your latest sales, newest products, and special offers.  Checkout Newsletter is a super simple extension for Magento which allows you to add a ‘Sign Up for Newsletter’ checkbox onto your Onepage Checkout Page.  With Checkout Newsletter, your customers can sign up for your company’s newsletter with just a click of there mouse!

16. Lazzymonks Twitter   Lazzymonks Twitter
Completely rebuilt to integrate better with magento. All the problems experienced with the earlier version have been fixed in this release.

You can set it to be in either the left menu, right menu or both. The number of updates to display is also adjustable.

Status updates can be posted from within the admin panel.

17. Events Calendar  Events Calendar
With this extension, you can display an events calendar on your website. Events are stored in the database. You can also display the upcoming list of events quickly by calling a block in your template.

Before entering any events, go to System->Configuration->General->Events Calendar and set your timezone.

Get the callendar using this {{block type="mathieufeventscal/events" template="mathieuf/eventscalendar/events.phtml"}}
Get the events list using this {{block type="mathieufeventscal/events" template="mathieuf/eventscalendar/nextevent.phtml"}}

18. Customer Groups Configurable Catalog  Customer Groups Configurable Catalog
This extension is a lot more flexible then the Netzarbeiter_LoginCatalog and
Netzarbeiter_CustomerActivation modules, but it is also more complex.
I suggest not installing this extension together with Netzarbeiter_LoginCatalog,
as that doesn't really make sense.

Release 0.2.5beta and above works with and without the flat catalog enabled

19. Exploded Menu  Exploded Menu
Replaces the standard Magento menu with a multi column drop down menu system. This is a community version of the Supermenu extension. The screenshots say it all ... Allows you to display your product categories in a more intuitive manner. Similar to the functionality used on top ecommerce sites like www.asos.com

20. Magento EasyLightbox  Magento EasyLightbox
Want a free and easy way to improve the appearance and functionality of your Magento site?  Then try Magento EasyLightbox, an extension that displays an image (i.e., your store’s products) as a lightbox.  Magento EasyLightbox takes about 5 minutes to install and configure, and you don’t need any coding experience! This is a great extension for just about type of online shop.

21. Fooman Invoice=Order Number   Fooman Invoice=Order Number
Love using Magento for your online store but hate how it creates separate invoice, shipment, and creditmemo numbers for one order?  Then start using Fooman Invoice=Order Number, a free extension for Magento.  Instead of keeping separate counts for invoice, shipment, and creditmemo numbers, this extension uses the related order number, making it easier for you to track of all of the numbers related to an order.

22. Magento jqZoom  
Magento provides users with an image gallery to help display their products in an attractive and interesting way.  Magento jqZoom, an extension for Magento, can make your online store even more dynamic, because it replaces Magento’s regular image gallery with the jqueryZoom widget.  This widget will allow your clients to hover over images of your products and show them in zoom view without having to use controls.

23. CLS Upgrade-proof Email Templates    CLS Upgrade-proof Email Templates
Looking for an upgrade-proof way to change your email templates for Magento?  Then give the Magento extension ‘CLS Upgrade-proof Email Templates’ a try!  Instead of having to directly change the default email templates for Magento, this module allows you to store your customized email templates in a custom theme directory which will override the default template.

24. Teaserbox  
Some tiny but nice features come with the Magento Teaserbox extension - below you will find a complete list of features which are supported within this product.

Image gallery
Sliding direction
Define Teaserbox proportions
....

25. IDEALIAGroup LightBox for Magento   IDEALIAGroup LightBox for Magento
IDEALIAGroup LightBox is UPDATE SAFE since no system files are replaced or modified and you can enable or disable it in a click.
FEATURES
1 - FULL MAGENTO BACKEND INTEGRATION: all parameters available in configuration (no coding needed)
2 - Configurable effect duration
3 - Support for thumbnails and base image: default double-click zooming of base image is automatically replaced and integrated
4 - Full styles configuration: assets colors, fonts and borders can be easily configured

26. Magento EasyTabs   Magento EasyTabs
This small extension will help to add informational tabs on product page. Installation and configuration will take approximately 5 minutes. No files are replaced and no codding experience needed to install!

1.Install extension using magento connect.
2.Log out from admin and login again.
3.Navigation to System > Configuration > Templates-Master > EasyTabs and enable extension for any store you need.

27.  MagentoConnect Manager   MagentoConnect Manager
One of the first things that really confused me when i start using Magento is Magento connect. I just started learning things, so i was looking for some plugin examples. I visited Magento connect page with extensions and looked for download button, instead i found “Get extension key” one.
You can also automatically upgrade your Magento installation through connect manager with key

magento-core/Mage_All_Latest

28. osCommerce Migration Tool   osCommerce Migration Tool
Now, available for download through Magento Connect, is a new extension for DataFlow which enables importing your data from osCommerce into your website in Magento.

To set up a profile, all Magento needs is information such as the IP/host of your osCommerce DB, user login and name of DB. Magento will take care of the rest. The data Magento supports is the default DB of osCommerce 2.2 RC2 which includes customers, orders, categories and products in multiple languages.

29. MostViewed module   MostViewed module
Magento MostViewed module automatically generates the list of your online store's most viewed
products and displays it at the home page (or some other page) in the customer area. All that you need - add the "mostviewed/list" block to the home page. You can do it at the CMS->Manage Pages page in the admin area. Simply add the following line to the content of page:
{{block type="mostviewed/list" name="home.mostviewed.list" alias="product_homepage" template="catalog/product/list.phtml"}}

30. Vertical Navigation with CSS Classes   Vertical Navigation with CSS Classes
With this extension you're able to design you own vertical category navigation with subcategories and product count display.

Each element has a fine css'ing so you can address each element or group exactly including "first" and "last" element per group and "previos", "activ" and "next" child.

The module removes the top.navigation via XML-Update and places the vertical nav in "left" structural block. You can change this by modifying the vertnav.xml file.