Product support

Get help in the plugin support forum.


  • Marketing


Check it out at at http://propertymanagement.toughdeveloper.co.uk

Backend Login

User login (or register yourself)

Please do not enter real information here - the admin login details above will display the data.


  • Client friendly - Simple admin interface to add new properties, categories and areas
  • SEO friendly - Sets meta tags and is compatible with Rainlab Sitemap plugin
  • Developer friendly - provides easy to use Events to extend default/overwrite default behaviour
  • User friendly - Optional integration with the Rainlab User plugin to save properties
  • Over 12 different search options by default
  • Provides enquiry form to help make conversions
  • Dashboard widget to view latest unread enquiries
  • Map pinpoint feature to place exactly where the property is
  • Translate and Currency support
  • Bootstrap default css styles / javascript

Optional Plugin Integrations

Required Plugin Integrations*

*May be removed by overriding partials if required

These plugin(s) are required for the plugin:

Property search results


Google Maps API Key (required)

API Key can be generated via the Google Developer Console

1) Enable the following API's:

  • Google Maps JavaScript API 2
  • Google Maps Geocoding API

2) Create a Browser Key on the Credentials tab with "HTTP referrers (websites)" key restriction in place.

3) Copy the newly generated key into the Property Management Settings

Property Search Form

Component Implementation

{% component "propertySearchForm" %}

If you choose to overwrite the default partial, ensure the input names are as follows:

  • is_for_sale
  • is_for_rental
  • areas[]
  • categories[]
  • min_price
  • max_price
  • min_bedrooms
  • max_bedrooms
  • min_bathrooms
  • max_bathrooms
  • search_term
  • order_by

Usage from pages other than result page

By default the search form updates the [properties] component via AJAX, if you need to implement the form on a page other than property results page simply overwrite the partial and set the <form> attributes as follows:

<form action="{{ properties | page }}">

Property results

Component Implementation

{% component "properties" %}

Component Properties

  • Category Filter - To limit results to a specific category, e.g. if the page name was /categories/:category, enter {{ :category }}. This can also be passed as a string e.g. commercial
  • Area Filter - To limit results to a specific area, e.g. if the page name was /areas enter {{ :area }}. This can also be passed as a string e.g. london
  • Results Per Page - Integer of number of results per page
  • Detail Page - The page to link to, this should have the :slug parameter within the URI, e.g. properties/:slug
  • Show Featured - Limit the results to only featured properties, useful for page like homepage
  • Show Saved - Limits the results to properties saved by the logged in user saved properties (only works if user is logged in) - usually used to display an account save property list.

Extending and amending the search

The property search fires 3 events:

Before search

This is where you can set defaults, prevent certain filters from executing and amend posted data. For example you may have a page that just dispalys luxury products for sale, which you could default as follows:

Event::listen('toughdeveloper.properties.beforesearch', function($component) {
    $component->isForSale = true;
    $component->isForRental = false;
    $component->minBedrooms = 3;
    $component->minPrice = 250000;

The full list of variables that can be amending are as follows:

  • isForSale
  • isForRental
  • isFeatured
  • isSaved
  • searchTerm
  • categorySlug
  • categories
  • areaSlug
  • areas
  • minPrice
  • maxPrice
  • minBedrooms
  • maxBedrooms
  • minBathrooms
  • maxBathrooms
  • orderBy

Extend search

Here you can amend the Elequount builder query to add your own condition. For example if you have extended the plugin to have a is_new_build column, you can use this in the search:

Event::listen('toughdeveloper.properties.extendSearch', function($component) {
    if (input('is_new_build')) {
        $component->searchQuery->where('is_new_build', true);

After Search

This event is usually used to amend the results before they are displayed to the page. For example if results on a certain page need to go to a different URL, you could do something like:

Event::listen('toughdeveloper.properties.aftersearch', function($component) {
    $component->results->each(function($item) {
        $item->setUrl('my-new-page', $component->controller);

Improves meta description formatting

Jan 21, 2018


Fixes admin ordering and search.

Dec 04, 2017


Fixes property validation and ensures size column is nullable

Oct 15, 2017


Areas/Categories auto search children, also ensures works without translate plugin.

Sep 04, 2017


Moves property type & status to database, adds currency support and size

Sep 02, 2017


First version of Property Management

Aug 23, 2017