5 Beautiful Top Selling Magento Themes

When building out your eCommerce store it’s common to be perplexed as to what design you should choose for your store. Not every business has the budget for a custom built and branded layout. If that is not within your budget you can start your store off with a pre-built template. We don’t offer pre-built templates ourselves as we build out custom templates but we have compiled a good list here of the 5 top Magento themes for 5 industries that we think would convert very well. For a larger company with an existing brand these pre-built templates might not work as well as a custom built theme that better matches you existing brand. For a new company or one where the branding is not as well established these pre-built templates work well.


 
Fashion Products Store

Here is a good template for a fashion products store. This template has a nice clean layout with a nice flat design. Everything is large, easy to click on and of course responsive.
fashion_template

 

Get Template >>>

 


 

Outdoor Sports Gear Store

This is a good template for an outdoor sports gear store. We like how the background makes the website wrapper pop a bit and the colors used in the logo are spot on for this website. We can design a new logo for you with this color pallet and change out the background to something you like.

outdoor_sports_store

 

Get Template >>>

 


Restaurant Website

This is a nice clean layout for a restaurant website. Building out your restaurant website on Magento will allow you to add your menu in and make it so your customers can order for delivery on your website.

restaurant_website

 

Get Template >>>

Magento free shipping after discount

If you have free shipping after x on magento then apply a discount coupon code that brings the total below x the customer still gets free shipping. Here is a corrected file for magento 1.9

This was based on a post that I can’t find anymore.

You will need to change this to the ID of the shopping cart promotion that you are using for the free shipping rule. if ($ruleId==’2′)

/app/code/local/Mage/SalesRule/Model/Rule/Condition/Address.php

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magento.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage_SalesRule
 * @copyright  Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */


class Mage_SalesRule_Model_Rule_Condition_Address extends Mage_Rule_Model_Condition_Abstract
{
    public function loadAttributeOptions()
    {
        $attributes = array(
            'base_subtotal' => Mage::helper('salesrule')->__('Subtotal'),
			 'base_subtotal_with_discount' => Mage::helper('salesrule')->__('Subtotal with discount'),
            'total_qty' => Mage::helper('salesrule')->__('Total Items Quantity'),
            'weight' => Mage::helper('salesrule')->__('Total Weight'),
            'payment_method' => Mage::helper('salesrule')->__('Payment Method'),
            'shipping_method' => Mage::helper('salesrule')->__('Shipping Method'),
            'postcode' => Mage::helper('salesrule')->__('Shipping Postcode'),
            'region' => Mage::helper('salesrule')->__('Shipping Region'),
            'region_id' => Mage::helper('salesrule')->__('Shipping State/Province'),
            'country_id' => Mage::helper('salesrule')->__('Shipping Country'),
        );

        $this->setAttributeOption($attributes);

        return $this;
    }

    public function getAttributeElement()
    {
        $element = parent::getAttributeElement();
        $element->setShowAsText(true);
        return $element;
    }

    public function getInputType()
    {
        switch ($this->getAttribute()) {
            case 'base_subtotal': case 'base_subtotal_with_discount': case 'weight': case 'total_qty':
                return 'numeric';

            case 'shipping_method': case 'payment_method': case 'country_id': case 'region_id':
                return 'select';
        }
        return 'string';
    }

    public function getValueElementType()
    {
        switch ($this->getAttribute()) {
            case 'shipping_method': case 'payment_method': case 'country_id': case 'region_id':
                return 'select';
        }
        return 'text';
    }

    public function getValueSelectOptions()
    {
        if (!$this->hasData('value_select_options')) {
            switch ($this->getAttribute()) {
                case 'country_id':
                    $options = Mage::getModel('adminhtml/system_config_source_country')
                        ->toOptionArray();
                    break;

                case 'region_id':
                    $options = Mage::getModel('adminhtml/system_config_source_allregion')
                        ->toOptionArray();
                    break;

                case 'shipping_method':
                    $options = Mage::getModel('adminhtml/system_config_source_shipping_allmethods')
                        ->toOptionArray();
                    break;

                case 'payment_method':
                    $options = Mage::getModel('adminhtml/system_config_source_payment_allmethods')
                        ->toOptionArray();
                    break;

                default:
                    $options = array();
            }
            $this->setData('value_select_options', $options);
        }
        return $this->getData('value_select_options');
    }

    /**
     * Validate Address Rule Condition
     *
     * @param Varien_Object $object
     * @return bool
     */
    public function validate(Varien_Object $object)
    {
        $address = $object;
        if (!$address instanceof Mage_Sales_Model_Quote_Address) {
            if ($object->getQuote()->isVirtual()) {
                $address = $object->getQuote()->getBillingAddress();
            }
            else {
                $address = $object->getQuote()->getShippingAddress();
            }
        }

        if ('payment_method' == $this->getAttribute() && ! $address->hasPaymentMethod()) {
            $address->setPaymentMethod($object->getQuote()->getPayment()->getMethod());
        }
		$rowsTotals=0;
		foreach ($object->getQuote()->getAllItems() as $item) {
			if( $item->getAppliedRuleIds()){	
			  $appliedRulesArray = explode(',',$item->getAppliedRuleIds());
				foreach($appliedRulesArray as $ruleId){
				
					/* $rowsTotals+=($item->getRowTotal()-$item->getDiscountAmount());  */
					if ($ruleId=='2') { // $ruleId=='5' number 5 is the ID of the RULE that is going to filter elegible products 
					$rowsTotals+=($item->getRowTotal()-$item->getDiscountAmount()); 

					}
			
				}	
			}
		}
		$address->setBaseSubtotalWithDiscount($rowsTotals);
		if ($ruleId=='2')
			$address->setBaseSubtotal($rowsTotals);
        return parent::validate($address);
    }
}

Magento new products by creation date

We found this post here:
http://www.tridian.com/developer-blog/adding-new-arrivals-to-magento/

Then just made a little modification as you can see below due to a error we were getting om the home page.

getIsHomePage()) {
$this->_productCollection = parent::_getProductCollection();
}
else
if (is_null($this->_productCollection)) {
$curr_category = Mage::registry('current_category')->getName();
$curr_categoryid = Mage::registry('current_category')->getId();
$curr_category = strtolower($curr_category);
if($curr_category == 'new arrivals')
{
$storeId = Mage::app()->getStore()->getId();
$product = Mage::getModel('catalog/product');

$this->_productCollection = Mage::getModel('catalog/resource_eav_mysql4_product_collection')
->setStoreId($storeId)
->addAttributeToSelect(array('name', 'price', 'small_image'), 'inner')
->addAttributeToSelect(array('special_price'), 'left')
->addAttributeToSelect('status')
->setOrder('created_at', 'desc')
->setPageSize(12)
->addUrlRewrite($curr_categoryid)
;//->load(true); // passing true to load will echo the sql to the browser.

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
// add InStock filter to prevent out of stock stuff from showing up. Chris Lohman 1/29/2009
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($this->_productCollection);
}
else
{
$this->_productCollection = parent::_getProductCollection();
}
}
return $this->_productCollection;

}
}
?>

How to add the newsletter to the header in magento

You can add the newsletter box to the header by putting this in your header.phtml file.

getLayout()->createBlock(‘newsletter/subscribe’)->setTemplate(‘newsletter/subscribe.phtml’)->toHtml(); ?>

In order to style in a different newsletter box you can duplicate the /newsletter folder in the templates folder and change the setTemplate(‘newsletter/subscribe.phtml’)->toHtml(); ?> part to your new folder name – example setTemplate(‘newsletter_SECOND_BOX_FOR_HEADER/subscribe.phtml’)->toHtml(); ?>

How to get more detailed logs for errors in magento

If your getting this error:

ERR (3): Warning: simplexml_load_string()

It dosent actually give you very many details but – if you add a line of code to a file you can get a more detailed error.

Open: /lib/Varien/Simplexml/Config.php and go to line 510:

You will see this: $xml = simplexml_load_string($string, $this->_elementClass);

add this under that line:
if(!$xml){ Mage::log($string); }

Magento Multi Domain Separate Robots.txt Files

If you have more than one domain running on one magento platform You may need to run separate robot.txt files. Just add these rewrite conditions into your .htaccess file

############################################
## enable rewrites

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} siteone\.com$
RewriteRule ^robots\.txt$ /siteone.txt [L]

RewriteCond %{HTTP_HOST} sitetwo\.com$
RewriteRule ^robots\.txt$ /sitetwo.txt [L]

############################################

Then just add your robot.txt information in those text files and your done! Test it though a online tester.

magento how to secure your server

Anyone who has been the owner of a eCommerce store knows that if you don’t take precautions getting hacked is a matter of when not if. In addition to any other steps you can find online here are a few more I have been doing lately.

We do offer hosting here at Towering Media and we have already taken these steps.

• Run a PCI complaint server.
• Stop listening to the FTP port on the computer. Instead connect over SFTP though the SSH port.
• Randomized your SSH port.
• Run CFS firewall
• Stop listening on your web disk port usually 2077
• Setup brute force protection
• Update your openSSL version
updating your OPENSSL through SSH
wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
tar -xvzf openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
./config –prefix=/usr/
make
sudo make install
• Of course keep your magento installation updated
• Keep your blog software, forums, ticket systems etc. up to date.
Create a development site for WHM/Cpanel users make the development site in another cpanel account. Put a .htaccess password protection file on it. This way if you need to give our your FTP / Cpanel logins to third party developers that may be overseas they don’t have access to your live site. Ask them what files they made changes to and move those files to live yourself / or your trusted developer can do this.

How to add custom english verbiage for price label for specific customer group in magento

This is the php if statement that you would add to your view.php file for changing out the english verbiage that pulls the price label for a specific customer group, like wholesale as this rule is for. You would find this in your view.php file for the product page

and change it to this:

helper(‘customer’)->isLoggedIn(); ?>

getCustomerGroupId();
if($_myGroupId == 2){
?>
Wholesale Price

How to display the quantity of products in stock on the Magento front end product page

This is how you enable the display of the quantity of products in inventory on the front end product page.

Open /app/design/frontend/default/YOURTHEME/template/catalog/product/view.phtml

In there you can paste this code anywhere you would like the stock quantity to display:

<?php if ($_product->isAvailable()): ?>
    <p class="availability in-stock"><?php echo $this->__('Qty Available:') ?> <span><!--<?php echo $this->__('In stock') ?>--><?= (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()?></span></p>
<?php else: ?>
    <p class="availability out-of-stock"><?php echo $this->__('Availability:') ?> <span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>