PrestaShop: Minifying HTML source code

PrestaShop 1.4 introduced a feature called “Minify HTML” to improve performance. In this how to you will find how to add this exciting feature to PrestaShop 1.3!

  1. Download PrestaShop 1.5.6.3 (the latest version of 1.5 branch).
  2. Extract prestashop/tools/minify_html/minify_html.class.php file from the package.
  3. Copy minify_html.class.php file to tools/minify_html/ directory (you will have to create this directory).
  4. Create a new file Media.php with the following content and put it to the class directory:
    <?php
    /*
    * 2007-2013 PrestaShop 
    *
    * 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@prestashop.com so we can send you a copy immediately.
    *
    * DISCLAIMER
    *
    * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
    * versions in the future. If you wish to customize PrestaShop for your
    * needs please refer to http://www.prestashop.com for more information.
    *
    *  @author PrestaShop SA <contact@prestashop.com>
    *  @copyright  2007-2013 PrestaShop SA
    *  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
    *  International Registered Trademark & Property of PrestaShop SA
    */
    
    class	Media extends ObjectModel
    {
    
    	public static function minifyHTML($html_content)
    	{
    		if (strlen($html_content) > 0)
    		{
    			//set an alphabetical order for args
    			/*$html_content = preg_replace_callback(
    				'/(<[a-zA-Z0-9]+)((\s*[a-zA-Z0-9]+=[\"\\\'][^\"\\\']*[\"\\\']\s*)*)>/',
    				array('Media', 'minifyHTMLpregCallback'),
    				$html_content,
    				Media::getBackTrackLimit());*/
    
    			require_once(_PS_TOOL_DIR_.'minify_html/minify_html.class.php');
    			$html_content = str_replace(chr(194).chr(160), '&nbsp;', $html_content);
    			if (trim($minified_content = Minify_HTML::minify($html_content, array('xhtml' => true))) !=  '')
    				$html_content = $minified_content;
    
    			return $html_content;
    		}
    		return false;
    	}
    
    	public static function minifyHTMLpregCallback($preg_matches)
    	{
    		$args = array();
    		preg_match_all('/[a-zA-Z0-9]+=[\"\\\'][^\"\\\']*[\"\\\']/is', $preg_matches[2], $args);
    		$args = $args[0];
    		sort($args);
    		// if there is no args in the balise, we don't write a space (avoid previous : <title >, now : <title>)
    		if (empty($args))
    			$output = $preg_matches[1].'>';
    		else
    			$output = $preg_matches[1].' '.implode(' ', $args).'>';
    		return $output;
    	}
    	
    	public static function getBackTrackLimit()
    	{
    		static $limit = null;
    		if ($limit === null)
    		{
    			$limit = @ini_get('pcre.backtrack_limit');
    			if (!$limit)
    				$limit = -1;
    		}
    
    		return $limit;
    	}
    
    }
    
  5. Open config/smarty.config.inc.php file.

    Find:

    $smarty->debug_tpl		= _PS_ALL_THEMES_DIR_ . 'debug.tpl';
    

    After, add:

    function smartyMinifyHTML($tpl_output, &$smarty)
    {
        $tpl_output = Media::minifyHTML($tpl_output);
        return $tpl_output;
    }
    

    Find:

    $smarty->compile_check	= false;
    

    Before, add:

    $smarty->register_outputfilter('smartyMinifyHTML');
    

Save and close all files and it’s done!

Leave a Reply

Your email address will not be published. Required fields are marked *

Cart  
(empty)

Cart Check out  »

Prices are tax inclusive.

The VAT rate for your country (US) * is 0,0 % because it is not a member of the European Union (EU).

* Please create an account if your country does not match.

Community feed
  • [Zen Cart] How to exclude words from URLs
    I'd like to know if it's possible to configure some stop words (in italian language) to remove from SEO URL. Thanks
    by incircolo
  • [PrestaShop] Setting-up CDN
    Hi, the url that generates is this: Code: <link href="//static1.peplogar.com/modules/psaccelerator/cache/961263a2bac53db414c080690bc69cfd.css" rel="stylesheet"...
    by PepLogar
  • [PrestaShop] Theme Provider + jQuery
    Hello, I use your module with many websites, I have only one issue : As soon as I activate the option to put the javascript in the footer in Prestashop every jQuery widget or plugin used in the...
    by Akrolab
  • [phpBB] Issue with Activation
    Hi, I just bought the SEO Magic Url Plugin for phpbb 3.2 I am having issue with activation. I have the php 7 install in my site/server. Read me file says its 5.6 , do i need the 5.6 or it...
    by pornera
  • [phpBB] Issue with Tapatalk
    After Installation of Magic SEO URLs for phpBB v3.0/3.1/3.2 5.1 we have an issue with viewing some random threads in Tapatalk app which shows this issue My config: PHP 5.4 PhpBB 3.0.12...
    by ingbrzy
Join our support forum » Pre-Sales Questions »
Featured Testimonials

I can't thank you enough for your fantastic service and recommended me your plugin. The site is a lot faster now!

Phuong, the owner of Oceanbox Designs

Magic SEO URLs seem to be having a really positive effect on our ranking and look so much cleaner in the browser than a random set of numbers. The sitemaps have also saved me a lot of time!

Simon, the owner of Beltingonline.com

More Testimonials »