Soon after I joined the company I currently work for, Precision Intermedia, I was placed to work on a site for a real estate company which was to provide searching of listings through RETS. However, the previous developers were having a bear of a time deciphering the RETS standard; even when we could wrap our head around the documentation, the MLS company seemed to either differ from it in their implementation, or otherwise make things unnecessarily complicated. With my help, we made sense of things and eventually finished the project, hopelessly past deadline and over-budget (for us, anyway). And the final project was a mess; part of it being that three developers in different places were working on it with poor source control (too many cooks, etc), but also because the project was doven into without fully understanding what would work and what wouldn't. The end result was that, when it was over, I was left feeling like, "All right, now that I know what I'm doing, let me try that again!"
I had yet to bask in Drupal's glory at that point, so the system was built from scratch in PHP. I called the system PIRETS, for Precision Intermedia RETS. I thought it was very clever.
Anyway, now a disciple of Drupal, I recently got my wish of a second chance at conquering RETS when another local realtor called us up and asked her to add live searching of real estate listings to her site. I set about implementing PIRETS 2.0 as a Drupal 6 module. Last Friday, the site went live, so I present to the internet: Ferndale Real Estate, a Drupal-powered real estate site.
A cron job regularly pulls listings from the MLS server and parses them into nodes. (This realtor is using the same MLS company as the previous one, which made things easier since I already knew many of their quirks.) The system caches everything; doing searches directly against the RETS server is just too slow and inflexible. A back-end makes it relatively easy to select which fields should be displayed and in what order, and which fields correspond to which search fields. The system is reasonably intelligent about formatting fields automatically.
Want to try the module yourself? Well, since I've only used it with one MLS company, I have no idea how well it will work for others - if at all. So I'm a bit hesitant to release it. (I'd also want to ask the client's permission first.) But… If you get in touch with my boss about us working on your site, you'll not only get the code, but I'll make sure it works for your MLS's RETS server too! =]
So please check out the site - especially the property search page - and check out the attached screen shots for some peeks at the back end.
| Attachment | Size |
|---|---|
| force-update.png | 15.79 KB |
| field-mgmt.png | 27.99 KB |
| featprop.png | 10.08 KB |

Comments
What about clean urls?
Will this module play nicely with PathAuto to generate nice clean, search engine friendly URLs?
What kind of pricepoint would you be looking at to covert to work with other MLS's (different RETS type)
Could you get rid of the /pirets/ or change to something like /properties/ or even better, adapt it to type, say /residential/, /land/, /commercial/, etc?
Damion Flynn
Damion Flynn
Will this module play nicely
At this point it makes no attempt at creating clean URLs, but I think that it'd be a trivial feature to add, either through Pathauto or through Drupal's standard URL aliasing support.
That's not a question I could answer right now. I'd want to take a look at the other MLS company's documentation first and see to what degree things are different, if any. Then my boss and I could talk things over and he'd throw out a number.
Yes, the "pirets" path could easily be changed to something else. Having it change on each property type would be a little more difficult, but not impossible; it might be better to go back to your first question and include the property type as part of the friendly URL (eg, "/properties/residential/property-listing-title").
The Boise Drupal Guy!
VieleRETS
I'm still surprised there is not more activity on this freely available module considering the amount of folks wanting RETS integrated into Drupal. Here is the only site I know of actually using it.
Main reason is because
Main reason is because VieleRets is behind it and Viele only works on a small handful of platforms. I have tried it on 3 different RETS server platforms and it has not functioned correctly on any of them. If Viele does not work correctly - then the module will not either.
Damion Flynn
Damion Flynn
Interesting
I have only tried it with FlexMLS and had great success.
One of the few
Flex is one that I have not had access to try with it.
I love working with a "standard" that has no real standard - don't you?
Damion Flynn
Damion Flynn
No. It sucks. As for that
No. It sucks.
As for that other MLS module, it's D5 only. The FernRE site uses D6. I suppose I could have tried to refactor it as a D6 module, but I felt more comfortable writing our own module to do exactly what we (and the client) wanted it to do and knowing 100% that it would be compatible with the RETS system we were using. It all turned out well in the end - the client was in the office a couple weeks back and said the site has really helped her score more leads than her last one. Given the current state of the real estate market, that was just about the best compliment I could have hoped for!
The Boise Drupal Guy!
Testing
Please let me know if you need someone to test it! ;)
Nice work
Nice work - hope it becomes a contributed module some day. Seems like if you had a generalizable API to any MLS (essentially mapping their outputs to your inputs - probably not that simple, huh?) and add to that a few theme templates, you would have a pretty strong starting position for a real estate module - which would be great for the Drupal community as there are none for D6 or D7.
Theoretically, it is that
Theoretically, it is that simple. Theoretically. In practice, implementations of the RETS "standard" for real estate listings can vary wildly. And since a client's RETS provider is invariably some large, difficult-to-contact out-of-town enterprise somewhere, it's difficult to bring pressure to bear on them when their implementations are broken; instead, we modify PIRETS to work with it as best as it can without breaking compatibility with everyone else. It's kind of hard not writing lame enterprisey code in this case; a feedback loop of crap software.
That being said, PIRETS follows good Drupal practice of keeping things as flexible and modular as possible, and I feel that, at least at this point, it's done a decent job of not sucking. At least not yet.
The Boise Drupal Guy!
That is not surprising at
That is not surprising at all.
Mind if I ask about your search box? Looks like a nice piece of work. What did you use to put that together? Did you use Finder for it?
The search form on Ferndale
The search form on Ferndale Real Estate (which uses what I now call PIRETS 2) is simply a custom form defined by the module.
The current version of PIRETS, PIRETS 3, actually no longer provides its own search form out of the box; instead, since it brings the CCK goodness, you can make a pretty decent one using Views' Exposed Filters functionality, or just simply use the standard Drupal search engine if you want something really basic. But one of our potential clients is going to try using it along with the Apache Solr search engine system, which also looks promising.
The Boise Drupal Guy!