Archive for July, 2012

Google Penguin Update for Small Businesses

Tuesday, July 31st, 2012

The SEO has been hit by Google’s penguin update especially small businesses which are already having a bad time due to the current economic climate. Many websites have had SEO companies use a lot of black hat technics which have been penalised many businesses across the board. If you are a businesses owner reading this or a web master then there are a few thing which you can do or change to help you crawl back up.

Firstly blogging via RSS and social media signals are very important hence blog regularly especially on places such as Google Plus and it is important to create yourself a Google Plus Page with your business information and website details. Twitter, Facebook and Linkedin accounts are also important to obtain. Here at Web Design GM have found a neat trick which connects your RSS or WordPress blog with your three main social media signals and allows your blog to be posted throughout your Social Media accounts. is a simple to use and you do not need to install anything all you need to do is follow the few easy steps and connect your RSS blog to your social media signals. Google Plus does not currently support having your WordPress blog being pushed to it but it may eventually allow it overtime.

Make sure all of your content is unique and not copied from another website. This is very important as Google regards content as king, so good quality content is essential for SEO and content which is not too spammy (keywords not all over the place). Try to make the content natural as possible so it reads good and explains what your business is really about. Make sure all spelling mistake and grammar is checked before your content is added to your website.

Interlink only a few keywords on other pages but with the new update variation is key. So for example if double glazing is my keyword then I will have links for a variation of this keyword on other pages e.g. uPVC windows. It is important you try not to have the keyword linked all over the place as Google will penalise you for this now. On this note, try not to have keywords in the footer as well. The footer should only be used for usability and not for SEO purposes so have your site maps here and other web pages but no keywords please.

Don’t have spammy title or meta tags and try not to over do the meta keyword tag as Google will not look at this in great depth nowadays.

If your a business who has local SEO add your website to local directories e.g. Bristol business directories or Cardiff business directories which will certainly help your SEO campaign once Google has cached these pages. Some good business directories to add your website to could be Touch Local, Thompson Local just basically Google “your areas business directory”.

Any questions or tips you might need please do not hesitate to contact us on 02920 290 080 or 01179 000 482.

Great new features of Magento 1.7

Friday, July 27th, 2012

At Morgan Creare we have long been awaiting the launch of the latest Magento Community Edition release, Magento 1.7.

The Magento team promised useful feature upgrades as well as a round of updates and of course reliability and performance improvements on the previous 1.6 version.

Here are three new features to watch out for:

EU Cookie Restriction

Magento have provided an in-built Cookie notification feature to ensure users keep inline with the recent EU Privacy and Electronic Communications Directive. When this handy little feature is activated a message appears at the top of the screen informing users that about the companies cookie policy and asks for the user to either accept or decline the cookie.

To access this go into System > Configuration > Web > Session Cookie Management > Cookie Restriction Mode

Change this to yes and the cookie message will appear.

CAPTCHA

There is now an CAPTCHA option that can be enabled in order to stop automated software from tying to access not only the admin area but the customer login area too.

To enable CAPTCHA for admin access navigate to System > Configuration > Advanced > Admin > CAPTCHA

Change the drop down box for ‘Enable CAPTCHA in Admin’ to yes.

To enable CAPTCHA for the front end navigate to System > Configuration > Customers > Customer Configuration > CAPTCHA

Change the drop down box for ‘Enable CAPTCHA on Frontend’ to yes.

Scheduled Backup

There is now a really simple and effective way of ensuring that your Magento store is backed up. With this new function there is no excuse not to make regular backups.

You can select the frequency of your backups, this can be set to daily, weekly or monthly intervals. You now also have the option to put the store into maintenance mode whilst the backup is taking place, ensuring that your potential customers are aware of why your store is temporarily unavailable.

To access this feature go to System > Configuration > Advanced > System > Scheduled Backup Settings

There are many more features that we are coming across on a daily basis, we will share these with you sometime in the near future.

Adding Free Sample or Tester Products in Your Magento Shop

Tuesday, July 24th, 2012

Today here at Web Design GM are going to discuss how to add sample or tester products to your Magento shops. There are many old tutorials which are out of date and simply do not work. We have tested this solution with Magento version 1.5 and 1.7. Free sample products or free tester products are ideal for e-commerce websites that require giving their customers for example tester materials or sample perfumes for instance.

You can restrict the amount of free sample products you want give out to your clients because you do not want people to have let’s just say a 100 free sample products. instead this tutorial will restrict the sample product to 5 but you can edit the code you change it to whatever you feel is the right amount.

1. Firstly you will need to create a file called getSample.php in the root of your Magento installation folder and populate it with the following code.

<?php

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

//print_r($_POST);

require_once 'app/Mage.php';
Mage::app();



Mage::getSingleton("core/session", array("name" => "frontend"));
Mage::getSingleton('core/session')->setSampleError("");
// Store users session
$session = Mage::getSingleton("customer/session");
 
//Store cart items
$totalNumOfCartItem = Mage::getModel('checkout/cart')->getItemsQty();

//Store cart items
$theitems = Mage::getModel('checkout/cart')->getItems();

$thecount = 0;

foreach($theitems as $ti){

	$thename = $ti['name'];

	$test = strpos($thename,'Free Sample');

	if($test !== false){
	$thecount = $thecount+1;
	}

}

if(isset($_POST['name'])){
$name = $_POST['name'];

$id = $_POST['id'];
if(isset($_POST['simpleid']) && !empty($_POST['simpleid'])){
$simpleid = $_POST['simpleid'];
}
}
if(isset($_GET['name'])){
$name = $_GET['name'];
if(isset($_GET['simpleid']) && !empty($_GET['simpleid'])){
$simpleid = $_GET['simpleid'];
}
$id = $_GET['id'];
}

// retrict shopping cart to only allow 5 samples 
if ($totalNumOfCartItem <= 4)
{
$theproduct = Mage::getModel('catalog/product')->load($id);

if($simpleid){
$thesimple = Mage::getModel('catalog/product')->load($simpleid);
}

if($thecount < 2){

// instatiate Product
$product = Mage::getModel('catalog/product'); 
if($simpleid){
$product->setSku($thesimple->getSku()."*".rand());		
} else {
$product->setSku($theproduct->getSku()."*".rand());	
}
$product->setName("Sample of ".$name);
// $product->setDescription("Sample of ".$name);
$product->setShortDescription($name." - Sample");
$product->setPrice(00.00);
$product->setTypeId('simple');

$product->setImageUrl($theproduct->getImageUrl()); // set the images from the original product
$product->setThumbnailUrl($theproduct->getImageUrl());
$product->setImage($theproduct->getSmallImage());
$product->setMediaGallery (array('images'=>array (), 'values'=>array ()));
$product->addImageToMediaGallery($_SERVER['DOCUMENT_ROOT']."/media/catalog/product".$theproduct->getSmallImage(), array('image','small_image','thumbnail'), false, false); 
$product->setAttributeSetId(9); // need to look this up
$product->setCategoryIds("15"); // need to look these up
$product->setWeight(21212121.21);
$product->setTaxClassId(2); // taxable goods
$product->setVisibility(1); // catalog, search
$product->setStatus(1); // enabled 
// assign product to the default website
$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); 


// get product's general info such price, status, description

$stockData = $product->getStockData();

// update stock data using new data
$stockData['qty'] = 1;
$stockData['is_in_stock'] = 1;
$stockData['manage_stock'] = 1;
$stockData['max_sale_qty'] = 5;

// then set product's stock data to update
$product->setStockData($stockData);
//die();

// call save() method to save your product with updated data
$product->save();


header("Location: /checkout/cart/add/product/".$product->getId()."/"); 
}
}

else
{
Mage::getSingleton('checkout/session')->addError("You are only allowed a maximum of 5 sample products");

header("Location: /checkout/cart");
}
?>

The above code is simply the function which will create sample products for you on the fly. Also not that in this example we have assigned each sample product with a ridiculous weight because the client offered the sample product and the shipping of the sample products for free meaning we had to create a table rate for the shipping method which did not interfere with the other shipping logic so that anything that exceeds 21212121 will have free shipping.

2. Next you will need to create a button where you want people to add a free sample product in the shopping basket. I have placed my sample button in the list.phtml and placed the button in both my list view and grid view.

<form action="/getSample.php" method="post">
      <input type="hidden" name="id" value="<?php echo $_product->getId() ?>" />
      <input type="hidden" name="name" value="<?php echo $this->htmlEscape($_product->getName()) ?>" />
      <input type="image" name="getsample" alt="Get Sample for <?php echo $this->htmlEscape($_product->getName()) ?>" src="<?php echo $this->getSkinUrl('images/your_theme_name/sample-btn.jpg') ?>" />
</form> 

The above will execute the getSample.php and add a sample product to your shopping basket whilst still allowing you to purchase other products from the Magento shop.

Changing Video Technologies

Monday, July 23rd, 2012

With the previous post discussing the application of Flash in dynamic web content, I thought I would write about its web video application.
Before the latest generation of browser supporting HTML5, there was no internet standard for internet video. When the HTML 4 standards were drafted in the 90′s, the internet was just too slow to facilitate videos larger than a few megabytes. In addition, there was no standard video format. Microsoft had its Windows Media Video format, and Apple had its Quicktime format, which they jealously guarded, whilst Macromedia had its Flash format, and none of these were particularly cheap to work with for the average person.

Then the internet got faster, and digital cameras started taking videos, and suddenly it wasn’t hard anymore – but nobody had changed the web standards. All the major players simply adapted general purpose html tags (like <object> and <embed>) and made plugins that browsers could use to play their content. Due to its smaller size, and the relatively low cost of animating versus filming, flash found a nice market opening up for it. With the development of their .flv format, Macromedia could also do video – but still none of this was standardised across browsers and platforms. Eventually, open source video formats and editing software began to emerge, such as the OGG format, and video was becoming more widely accessible – now it just needed a proper platform.

The World Wide Web Consortium (W3C) has always striven to reduce user reliance on third party plugins in order to view web content, and so when HTML5 was being implemented, they looked at handling video in a different way. Their approach to this was the <video> tag – a tag that would support different formats like .ogv and .webm and .mp4 (the new version of Apple’s Quicktime format). Browsers didn’t know what format to expect, but they knew a video was between the <video> tags.

All the major browsers in their latest incarnation support at least one <video> format, though not all, but W3C was expecting this, and enabled one <video> tag to source several files –

<video width="320" height="240" controls="controls">
  <source src="movie.mp4" type="video/mp4" />
  <source src="movie.ogg" type="video/ogg" />
  Your browser does not support the video tag.
</video>

The disadvantage of this method is that you need to upload a different video file for each format you want to include, but the advantages far outweigh the disadvantages. This standardised container comes with its own controls (turned on with the controls attribute) but if you turn these off, javascript can be used to create your own custom controls. The code below (which I wrote for a site currently in development) uses an anchor and the onclick event to control playback of the video, as well as fading the button out of the way when the video is playing.

The javascript:

var vid = $("#presenter")[0];

if (!(Modernizr.video))
	$("#presentButton").attr("href", "UnitaryEngineeringServices.mp4");

else{
	$('#presentButton').click(function() {
			vid.play();
			$('#presentButton').fadeOut("fast");
	});
}

$("#presenter").click(function() {
	if (!(vid.paused)) {
		vid.pause();
		$('#presentButton').fadeIn("fast");
	}
});

and the html:

<div id="present">
            <a href="#" id="presentButton" >Play Our Presenter</a>
            <video id="presenter" <?php /* onloadedmetadata="loaded()"*/ ?>>
              <source src="UnitaryEngineeringServices.mp4" type="video/mp4" />
              <source src="UnitaryEngineeringServices.ogv" type="video/ogg" />
              <p class="error">Your browser does not support the video tag. Click the link above to play the video seperately (Quicktime Required)</p>
            </video>
            <p class="timer"><span class="current"></span>  <span class="duration"></span></p>  
        </div>

As you can probably guess, this means the controls for any video (including the progress bar) can be styled in any way you want to fit in with the scheme of your website. But the potential of the <video> tag doesn’t end there – HTML5 also brought the <canvas> element to the table, and with it, even more possibilities. The <canvas> element allows on-the-fly modification of <video> streams, such as stretching, shrinking, greyscaling, and even chroma-keying (green screen effects). Take a look: http://html5doctor.com/video-canvas-magic/

The <canvas> element also has a lot of other interesting possibilities to explore (both animation and otherwise), but that’s for another post. The introduction of these two elements, and their fast-growing browser support, means that the web’s relationship with video is undergoing a massive change. New methods of using the powerful features of javascript and HTML5 are emerging at a lightning pace, and I expect the release of jquery 2.0 next year will make many of these techniques accessible to the average web developer in the same way jquery gave us simple slider, galleries and the like. Soon, <embed> tag videos may be a thing of the past, and the web will be a better place for it.

Javascript vs. Flash

Monday, July 16th, 2012

Ask any web designer today and they will most likely say that Flash is a relic; the truth is that until the availability of JavaScript libraries such as Jquery and MooTools, developing websites with animation/ interaction was out of reach for most web developers. It originally rose to prominence due to the duration and difficulty of javascript development cycles, cross browser compatibility issues and the inherent requirement of an extensive knowledge of javascript to tackle even the simplest tasks.

The introduction of libraries that support cross browser compatibility are trivialising said development constraints, and in doing so continue to mould the learning curve into a more manageable gradient for web developers today. Using a combination of libraries can give you control over AJAX routines, on-the-fly form validation, search functionality and various content consolidation methods – even some animation; which ultimately covers a large majority of interactive functionality requirements.

Javascript Pros Javascript Cons
Small file size Features are far less extensive than flash
Large number of libraries to suppress the very high learning curve 3D features are limited
Far more cross browser and mobile compatibility More demanding features are processor intensive and therefore slow on most browsers
Can add animation to elements/tags on your webpage Users can disable javascript

These are but a few of the pros and cons to consolidate an understanding of what JavaScript can and can’t offer at the most basic level. There are still however a number of advantages that Flash brings to the table despite most technologies branching out to avoid it…

Flash Pros Flash Cons
3D capabilities Lack of mobile compatibility
Consistent appearence on browsers that do support it Cost of purchasing flash software
Networks of free/ commercial tools Large file size
Supports vector art Requires flash plugin to work
Built in UI Users can disable flash
Changes require the file to be recompiled and therefore is more time consuming
Relatively high learning curve

Javascript libraries happily roam between most formats but are still at home on websites that have more of an interactive design feel vs. strictly informative content, whereas Flash is ultimately still the go-to-guy for video embedding until an iteration of Javascript can rival it. Taking into consideration everything above, it is only fair to say that they are currently two separate entities all together, and conclusively BOTH best… in their respected arenas.

Contact Us Today...

If you have any questions about our services or want to arrange a free no obligation consultation contact us today or call 02920 290 080 for Cardiff and 01179 000 482 for Bristol.

Bit Torrent Study Discovers Most File Sharers Are Now Monitored

Ever heard of torrents or used Bit Torrent to download movies, music or shared files over the internet? Researchers have discovered that anyone who does use Bit Torrent to download files over the World Wide Web will most probably be monitored. Studies were carried out by Birmingham University and they have discovered that if someone [...]
» more

Cardiff: 02920 290 080 Bristol: 01179 000 482