Overview
The personalization module adds highly configurable implicit and explicit personalization to Drupal websites based on geolocation and taxonomies. This means you can deliver content to site visitors that is relevant to their interests.
This is ascertained from their physical location and behaviour on your site, which builds up a personalization profile of them. There are a large number of applications for this module; a basic example would be if a user accesses lot's of pages about working for your company you could show them jobs closest to them. Or if you're an international company you could show the contact details of the office nearest to them. Or if they access a number of articles about marketing you can suggest other marketing content to them. There's no reason why you couldn't also use it for advertising, e.g. this user has looked at 10 articles tagged with Xbox, you could then display an advert for the Xbox One.
The module is designed for larger content heavy sites but would work effectively on any. It comes with a "Suggested content" block and paginated listing but the intention is for developers to call the modules functions directly to retrieve users suggested content to do with as they please. It was created to bridge a gap in Drupal core and contrib module space. After running many CMS selection workshops with enterprise clients, many of them ended up selecting SiteCore due to the level of personalization it offers; which is time consuming (expensive) to achieve in Drupal.
Features
- Geolocation based personalization
- Implicit - based on users IP address (uses Telize GeoIP service)
- Explicit - If the location isn't ascertained from the IP the HTML5 location API is used
- Search based personalization
- Implicit - Search keywords from Google, Bing and Drupal search are matched to taxonomy terms
- Taxonomy based personalization
- Implicit - Accessing content tagged with certain vocabularies
- You can extend the module by setting your own scoring mechanisms programmatically
- Suggested content block
- Suggested content paginated listing
- Comprehensive configuration
- Works with non Drupal core caching such as Boost, Memcached and Varnish etc
Requirements
- Taxonomy core module
- Any HTML5 theme for explicit geolocation (If yours isn't, you can tell the module the users location so you could add a postcode search or similar.)
- Whilst the geolocation logic should work on any database engine that supports trigonometry, it has only been tested with MySQL.
How it works
The module relies on content categorization, terms are linked to users and given a "score" based on the users interaction with the site.
Geolocation
Upon installation the module creates a new vocabulary for "locations" which consists of a label, a latitude and a longitude. It also adds the five continents to this vocabulary to get you started. You will need to add a taxonomy reference field to the nodes you want to be suggested and assign location terms to them.
If enabled, the users IP address will be sent to the Telize GeoIP service which will return the latitude and longitude (note, this many not be very specific. E.g. it may return "United Kingdom" rather than "London" so depending on the accuracy you need you may want to only use explicit means).
If the location cannot be ascertained from the user's IP address, the can be asked using a HTML5 location request which should return an accurate latitude and longitude.
If all else fails the module treats the accessing of 10 nodes tagged with a specific location term to be the users location.
Once the users latitude and longitude is ascertained, the nearest term from the location vocabulary will be scored for the user.
Search
A configuration tab allows you to map search terms to taxonomy terms. E.g. "Cat" == "Kitten". Then when a user accessing the web site from Google or Bing, or executes a search on the Drupal site itself; if their keyword matches "Cat" the score will be attributed to "Kitten" for example...
Content access
When a user accesses a node, the terms assigned to that node are scored.
Suggested content
The module comes with a function "personalization_match_content()" to retrieve the nodes that are relevant to the users interests to be displayed as you wish. There is also a block for quick display and a function "personalization_paginated_list()" that returns a themed and paginated list to be echoed where appropriate.
Cache
The module is designed to work with or without caching and JavaScript. I.e. if you have advanced cache such as Boost or Varnish, the users options and rendering of suggested content will be handled via AJAX. If the user does not have JavaScript enabled PHP will do this. However, If you use advanced caching, users without JavaScript will not be tracked and therefore not receive suggested content.
Related modules
- Personalization Views (https://www.drupal.org/project/personalization_views)
Project information
- Project categories: Content editing experience, Site structure, Site search
3 sites report using this module
- Created by dan.ashdown on , updated
Stable releases for this project are covered by the security advisory policy.
There are currently no supported stable releases.




