Mobile Design and SEO Best Practices: Essential Tips

Filed Under (Design & Development, Industry news, Mobile, Search Engine Optimization, Search Marketing, Social Media Optimization, Strategy, VIRTUOSA, Website Usability, search) by Mangosuthu Malinga on February 22, 2010

Tagged Under : , , , , , , ,

The growth in the Mobile Industry over the last decade has made it paramount for all businesses to have Mobile Sites in order to reach this growing new target market.

Current local (South Africa) trends show that:

  • There are ten million mobile Internet users in SA (Five million PC Internet users in SA)
  • One in six Google searches in SA originates off a mobile device.
  • In South Africa about 40 percent of mobile phone users have WAP-enabled phones.
  • The top Mobile Applications currently in South Africa are: Mxit – with 15 million+ users – and Facebook.
  • Mobile search and eCommerce will be a large area of growth in 2010.

In short, this indicates an importance for businesses to target mobile searchers and users of mobile applications.

Some of the best Mobile Site examples I can give include BBC, the Goal mobi site, and College Humour (N/B: “these examples obviously look better on your mobile phone – feel free to suggest your favourite mobile sites below“).

However, when creating a Mobile Site it is also imperative to build and optimise the Mobile Sites so it is user-friendly and accessible on the Mobile Web.

Mobile Design and SEO Best Practices
When designing a Mobile Site one aspect to consider is that one must understand that mobile searchers/users are different from PC searchers/users. In order to cater for Mobile users designers must:

  • Provide an elegant experience by considering whether individuals possess a smart phone (for example an iPhone with fully featured web browsing) or a standard mobile phone (with stripped site features).
  • Consider that phones are not used like PC’s – users are usually on the go therefore the site should be more goal oriented – Relevancy and Simplicity is key.
  • Mobile designs are to conform to the new W3C standards in order to create mobile-friendly style sheets (CSS).
  • Mobile Sites must be small, lightweight and fast-loading site – (< 20kb / page).
  • Consider User Agent Detection –  this is another form of transcoding which takes into consideration the type of mobile phone an individual uses to search and provides more uniform browsing experience for various device types.

Once the Mobile Site has been built, Mobile SEO steps can now come into play. These include:

1.    Validating the page with the .Mobi Validator or the W3C Validator
2.    Following ‘traditional’ on-site  SEO Best Practices such as:

  • Major keywords in the title tagging
  • H1’s and body text
  • Rich keyword Meta Titles and Descriptions
  • Keyword-rich anchor text for internal links

3.    Mobile Search results tend to reflect ‘Local Search results’ – your site must be optimized for local type searches. Also submit your business info to local directories making sure your site is verified and included in sites like Google’s Local Business Center.
4.    Get the Mobile Site spidered and indexed – submit to major search engines:

In short, the above Mobile Design and SEO factors are to be strongly considered when building a Mobile Site. These aspects help provide a solid Mobile Site foundation for your Mobile Campaign or Strategy. For further Mobile Campaign or Strategy enquiries, visit our Virtuosa website.

Get Your Site Checked Today by the Google India Search Quality Team

Filed Under (Design & Development, Google news, Website Usability, search) by Melt du Plooy on January 7, 2010

Tagged Under : , , , , , , ,

If you were a Indian Webmaster, why wouldn’t you want the Google Search Quality team to analyze your website and offer constructive advice on accessibility and improvements that can lead to better visibility for your website in Google’s search results?

According to the official Google India blog a new Site Clinic launched yesterday and will accept site submissions until 20 January 2010. Indian Webmasters can register their sites for the site clinic by simply filling in all the information requested on a form and by complying to some guidelines such as being registered on Google’s webmaster tools and by meeting Google’s quality guidelines.

There is also a Site Clinic especially for the Spanish-speaking market launched by the Google Webmaster Central blog in Spanish in September 2009.

For the rest of us, it seems we simply have to do the work ourselves via our own Google webmaster tools accounts and by meeting Google’s quality guidelines. Who said everything is fair?

Increase your Organic Search Ranking with 3 Simple Keyword tips

Filed Under (Design & Development, Search Engine Optimization, Search Marketing, Social Media Optimization, Website Usability) by Mangosuthu Malinga on October 9, 2009

Tagged Under : , , , ,

Organic traffic is the web based traffic which you are naturally able to attract to your site without using any short cuts or paid submissions for the promotion of a website. This traffic is an unpaid listing on search engines or web directories.

Just the other day I came across a site that had a serious drop in its Organic traffic and this got me thinking of strategies that could be used help the site recover from this slump in Search visits.

Anywoo, I thought I’d write a short blog – (well 3 short tips to think about actually) – that you can employ in order to Increase Organic Search Engine Traffic to your site.

Read the rest of this entry »

Using hooks in openGoo

Filed Under (Back-end Development) by Elsabe Lessing on September 14, 2009

Tagged Under : , , , , , , , , ,

So, you’ve discovered the world of openGoo. It does a pretty good job overall but now you want to add some custom flavour! Where do you start? What are the options?

Firstly, I’d recommend running through the “Hello World” application tutorial (that can be found HERE ) as it gives you a quick overview of the control flow of openGoo. If you’re not familiar with MVC (Model-View-Controller) programming it’d be a good idea to take a few moments to read up on the principles of a MVC system, get the basic idea of what each component should be used for. I’ll be looking at the MVC of openGoo in a future blog post, for now we’re moving on to the Hooks.

If you’ve had previous experience with customization of a CRM / CMS / Web application you might be familiar with the concept of hooking / hooks. A hook is one of the easiest and fastest way to extend and application’s functionality in an upgrade safe way. And believe me, you want to keep your customizations as much upgrade safe as possible. Trying to figure out why a customization you did a year ago broke isn’t as fun the second time, it tens to ends in a complete rewrite of the initial customization. There’s nothing that frustrates me more than having to re-write code.

A hook is basically a place where you can “hook” in your custom code without having to change anything to the existing code. In fact, you don’t need to know how the rest of the package works to use a hook.

Using a hook in openGoo is as easy as 1, 2, 3.

  1. Create a new php file in the ‘Application/Hooks’ directory, which will contain your custom code. Example: ‘opengoo_hooks.php’ , ‘myhooks.php’

  2. Register your hook

    Hook::register(“opengoo”);

    The string used when registering the hook can be anything, as far as I can see its used as a key in the array where the hooks are stored. You could use this key to reference a specific hook later in your code, if needed. I’ll refer to this as the [hook_key] later. Also note it may be a good practice to name your php file “[hook_key]_hooks.php”.

  3. Define the hook function.

      function opengoo_render_upload_control($args, &$ret) {
      if (upload_hook() == ‘opengoo’) {
      $attributes = $args['attributes'];
      echo file_field(‘file_file’, null, $attributes);
      }
      }

    Note that the function name should be of the format ‘[hook_key]_[hook]‘.

    In the above example [hook_key] = ‘opengoo’ and [hook] = ‘render_upload_control’.

    Working example:

    Lets say we want to customize one of the layouts on openGoo. For this example lets change the Login layout for illustration. Instead of overwriting the layout file in “Applications/Layout” we can simply define a hook to set the layout to be used to our new custom layout.

    Default layout.

    Default Layout of login dialog

    First lets create our hook file. I created a file “example_hooks.php” in the ‘Application/Hooks’ folder.

    <?php

    /* Register your hook else it won’t fire! */
    Hook::register(“example”);

    /* Define hook functions */
    function example_override_action_view($controller, &$ignored) {
    /* Check which controller has fired the hook */
    if ($controller->getControllerName() == ‘access’) {
    /* Check that the action is ‘login’ */
    if ($controller->getAction() == ‘login’) {
    $controller->setLayout(‘example’);
    }
    }
    }

    ?>

    I’ve used the ‘override_action_view’ hook for this example. This hook gets fired by all the controllers. We want to change the layout of the login form so we need to set the new layout when the ‘login’ action of the ‘access’ controller is called. After we’ve tested that we’re at the right spot we can change the layout by calling the “setLayout” method of the controller.

    You can use the getLayout method to see what layout is currently being used. In this example the original layout being used is ‘Application/Layouts/dialog.php’

    Next step, we need to create our new layout ‘example’. Note you use the file name without extension to set the layout, openGoo automatically looks for the layout in the ‘Application/Layout’ folder. Create a copy of the dialog.php in ‘Application/Layouts’ and rename it to ‘example.php’. Open up ‘example.php’ and make some changes to the layout. I simply added an image below the dialog div and the word “example” to the H1 tags.

    <img src=”<?php echo get_image_url(“jack.jpg”) ?>” height=”250px”>

    I put the image of Jack, my trusty testing duck, in ‘public/assets/themes/default/images/jack.jpg’ the ‘get_image_url’ function fetches the image URL according to the selected theme.

    Browse to the login dialog page and ‘Hello Jack!’. It’s that simple to add a duck to your openGoo login page.

    Custom 'example' Layout

    Custom 'example' Layout

    List of available hooks: ( for more detail take a look at ‘Application/Hooks/opengoo_hooks.php’ )

    /*
    * – render_page_actions: Called when drawing actions for an object’s view. Call add_page_action to add actions.
    * – render_page_header: Called when drawing the page header.
    * – render_getting_started: Add additional getting started help.
    * – render_object_properties: Called when drawing properties for an object’s view. Echo the HTML to be drawn.
    * – reminder_email: Called when an email reminder is being sent.
    * – render_userbox_crumbs: Called when drawing the userbox (top-right of the page).
    * – autoload_javascripts: Tells which javascripts should be load when the application starts.
    * – autoload_stylesheets: Tells which CSSs should be loaded when the application starts.
    * – render_administration_icons: Called when drawing administration panel.
    * – object_definition: Allows to define extra columns for a system object.
    * – render_object_description: Called when rendering the description that goes below the title in an object’s view.
    * – permissions_sql: Called when generating the SQL permissions string for object listings.
    * – can_access: Called before checking access permissions for an object.
    * – object_edit_categories: Called when rendering categories for an object creation or edition interface.
    * – object_validate: Executed before saving an object to validate object fields.
    * – before_action: Called before executing an action to determine if the action will be called.
    * – override_action_view: Called before generating an action’s view, so that you can change it.
    */

    Fire your own hooks from your custom module:

    To create and fire a hook from your own module, you simply call the static fire method of the Hook class.

    Hook::fire($function, $argument, &$ret)

    $function : String containing the name of the hook. Example ‘ render_page_actions’.

    $argument : Arguments passed to the hook. For the built in hooks this is normally the current controller.

    $ret : The value

    Well that’s it for hooks in openGoo. This is meant as a starting point for customization, I’m sure there’s more to be added, any input is welcome. In the next blog I’ll be showing how to create a simple Bulletine Board type module.

    openGoo – Introduction

    Filed Under (Back-end Development) by Elsabe Lessing on September 4, 2009

    Tagged Under : , , , , , ,

    OpenGoo is an open source web office developed by Feng Office and the OpenGoo community. It can be used for project management, including the scheduling of tasks and milestones, document storage, contact and calendar management, email receiving (POP3 or IMAP) and sending(SMTP) and runs on a PHP webserver with MySQL installed.

    Read the rest of this entry »

    Virtuosa Acquires IceBlue

    Filed Under (Design & Development, Industry news) by Sandra Olivier on August 19, 2009

    Tagged Under : , ,

    Full service digital agency Virtuosa announced today that an agreement to acquire IceBlue has been favorably concluded. Virtuosa and IceBlue have worked together closely over the past year with IceBlue bringing additional development capabilities to the joint projects. The buy-out was a natural progression when IceBlue MD Rex Green indicated his intention to sell to pursue other business interests.

    Read the rest of this entry »

    Copy and Paste… The ethics of reverse engineering…

    Filed Under (Back-end Development, Design & Development, Front-end Design) by Grant McMullin on May 22, 2009

    Tagged Under : , , , , , , , ,

    Having recently experienced the burn of plagiarism, I started thinking of the ethics of the Internet. And the question of ethics of in particular reverse engineering like SWF decompiling. There are many different programs that do this and I believe they really do have their place in the arsenal of any developer.

    Read the rest of this entry »

    Flash vs SEO, the saga continues….

    Filed Under (Back-end Development, Design & Development, Front-end Design, Google news, Search Engine Optimization, Search Marketing, Website Usability) by Grant McMullin on May 21, 2009

    Tagged Under : , , , , ,

    We all know that in terms of SEO, Flash is considered less than perfect, and completely Flash driven sites are considered by some in the SEO world as a complete ‘No no’, however the times are changing.

    Read the rest of this entry »

    TrashcanKidz Facebook Application Launched

    Filed Under (Design & Development, Front-end Design, Google news, Social Media, social networking) by Grant McMullin on May 20, 2009

    Tagged Under : , , , , ,

    We have just launched our very first Facebook application, TrashCanKidz! It has taken a lot of time and a lot of effort from a team of passionate people.

    Read the rest of this entry »

    Struggling to retain visitors on your website?

    Filed Under (Design & Development, Search Engine Optimization, Website Usability) by Melt du Plooy on March 4, 2009

    Tagged Under : , , ,

    If you’ve got the time for a little bit of self-study, here are some great articles that you will find useful. I am simply mentioning the articles and have thus provided links to the original source.

    Read the rest of this entry »