Hi all,

Intro
I have just finished a directory site using Drupal 6.x which lists Firewood businesses around the UK. Its aim is to provide high quality directory listings with reviews and extra content provided by the sellers - together with a niche knowledge base that users can add to. So far there are around 1600 listings.

http://www.firewoodreview.co.uk/

Main Features
At the core of the site are directory listings, submitted by users. The listings can be free, standard or premium, and different options/visibility occurs when each is selected. Visitors search through the listings by typing in their county into the auto complete finder search.

Supplier reviews will play an important part once the site gains momentum. The site also has a knowledge base for articles, questions and product reviews, which I am adding to as time goes on.

Building the site
The site started off in Photoshop and was built using Panels & Panels Everywhere - 2 excellent modules for theming and design. CCK and Views are used to collect and display most of the data, and the finder module has been used with Views to supply the search feature. Careful attention has been paid throughout the build to user experience, especially logged in users who want to add to the site. For this, I have build a user dashboard using Panels, so that when they log in, they can see everything to do with their account - content creation options, membership options and previously created content.

To allow payment subscriptions, I first tried some of the ecommerce solutions - Ubercart and Ecommerce, but they were too heavy. I then tried various paypal options, but they were not supported well and limited in use. I finally settled on the membership suite module from moneyscripts, and although I wasnt happy about going outside the drupal.org sphere I have to say it's an excellent module and was finely tuned to a membership solution. It has all the features you would expect, and no extra fluff. It integrated well with autoassignrole, which meant users could choose their user category upon sign up, and it has a very straightforward payment system fllow, which means less effort and barriers to paying customers. It supports a wide variety of payment solutions, which means that if the site ever gets popular, I can add payment options other than paypal. Also, the support has been very good.

Data Collection
I wanted to start the site off with lots of listings in order to make it useful to users straight away. I outsourced this data collection work, and then imported the results from a csv into the site using node import. This excellent module allowed me to import thousands at a time, and to create nodes and map the CCK / taxonomy info to the correct places.

Outro
The project was a long project, mainly because of the data involved, but also because it was done in my spare time when not busy with other projects. It has been about 3 months on and off (mostly off :-) and the majority of the site was done in 1 week. I would say it's definately worth doing larger projects as part of a team, because it's good to have more than one view point, but overall I'm happy with the site as it stands, although my work has only just begun in terms of promotion and optimisation. The real time eater was probaby the data preparation and import.

Let me know what you think!

Thanks, Joe

Comments

Tafa’s picture

this site looks amazing to be honest. simple yet nicely laid out in all proportions. One thing i noted is that some pages have access restriction, i.e. http://www.firewoodreview.co.uk/find-related-services. Does that mean the user needs to register to be able to view the page?
in any case, well done...

joecanti’s picture

Thanks very much for the kind comments! No there's no access restriction on that page. It's strange, Google crawler came up with a few pages that it marked as not accessible, but there are no access restrictions in place. I need to get to the bottom of it to avoid further crawl errors - can you try it again and tell me what happens?

It's beginning to get a little traffic now and be indexed by Google. I've got a lot of promotion ahead of me to try and get it off the ground!

cheers Tafa,

Joe

Tafa’s picture

sure, here's a screenshot of the page in mentioned earlier. sorry, couldn't attach the file to this comment. hope that helps.

http://imgur.com/JL4fa

joecanti’s picture

Cheers Tafa,

Thanks for the screenshot - yeah it's the facebook fan box. It did it to me a few times on IE but not on Firefox yet - I'll have to start looking into why, but I think it's facebook related.

At least it's not the whole page being disalowed!

cheers, joe

Tafa’s picture

no problem...hope you get around it then...not sure if i should but i also noted a few other things you might want to have a look at whenever:

- no faqs yet links point to faq
- perhaps a little bit more on about us section rather than a one-liner
- perhaps get rid of orangey banner on some pages (i.e. http://www.firewoodreview.co.uk/find-related-services) as it's more frontpage type of layout than internal links
- knowledge base appears to be empty at the moment so might want to disable path whilst adding more info to it...
-etc...

joecanti’s picture

Yes - it's really good of you to make those notes so thanks - it being a one-man project I am very appreciative of feedback. When you do a large project on your own it's hard to look at it wil fresh eyes.

- I definately need to add FAQs soon as.
- That's a good idea, I could easily have a separate page devoted to the about us section.
- I had thought about it - I might replace it with the white top page design in the future. They were designed as landing pages, but could do with some distiction between them and the front pages.
- Knowledgebase needs lots of content adding. I'm writing some articles at the moment. The knowledgebase should end up being a large part of the site, attrtacting seo interestr as well as lots of visitors. We shall see.

Thanks for taking the time to look through it - much appreciated. Joe

Tafa’s picture

no problem...you did a great job and I hope I could do the same in the near future...;-)
All the best
T

joecanti’s picture

Thanks Tafa - good luck with your project and let me see it when it's done!

cheers, joe

Tafa’s picture

no problem, it'll be added to the drupal showcase section of d.o.

mefisto75’s picture

"Registration is quick and easy - it only tales a minute"
Got a few ideas for myself.
Thanks for sharing.
P.S. Didn't register a test user, to keep it clean. Tempting though)

joecanti’s picture

Hi,

Thanks! Good catch. I'll change that now.

cheers, joe

jastylr’s picture

I just came across this post and I took a look at and like your site. I too want to create a business directory using Drupal and was wondering, are the business listings themselves just CCK nodes or are they Content Profile nodes or something similar.

I wanted to be able to create many free listings with basic information either by myself or by a registered user as well as more feature-rich listings for paid users. Using CCK nodes, anyone can create multiple listings but with Content Profile, the listing becomes attached to the user's account.

Both options have the pros and cons and I was just wondering how you went about it.

Great job on the site!

joecanti’s picture

Hi,

Sorry for the delay in replying to your question...

I used simply a new CCK content type called 'listing' which had all the information for both free and pro accounts available.

I then used Views to make lists of this content based on the users roles, so that everytime a users node is viewed, it checks the role before displaying the info.

This means that the list of businesses is actually 2 views - 1st premium then standard.

This method has it's advantages and disadvantages - and there are many things to think about:

- firstly - what happens when your users move up and down roles by payng and subscribing, or by unsubscribing.

- Secondly, should you have 2 listing types - one for premium listings and one for basic listings? Then how do you manage the 2 listings, and flick between the 2 depending on user role. Also, there's the issue of getting the user to input the data twice when they sign up and pay. If you use only one listing type - you need a robust way of hiding and showing fields to the public, and also if you desire fields to the logged in user. I chose to keep these fields available so that the standard users can explore and see what their paid membership would allow them to do.

Mainly the considerations I made were all about making it easy for the end users. I had to make a few concessions to make this happen - but that's always the case I guess.

I did think about doing it with content profile, but i came across problems when adding a role during the sign up process - especially when adding a paid role. I used the paid Moneyscripts module to handle paid role subscriptions, which doesn't lend itself well to node creation upin registration.

Another consideration is whether to choose D7 or D6. All my projects are on D7 now, but I think there are a few modules that didnt make it across yet that would be useful for this type of site. D7 is better in many ways though - so if doing this again I'd definitely give it a go to begin.

All the best, Joe

(If you want to know any more - feel free to reply here, or get me at www.joecanti.com to send me an email)

LadyVicious’s picture

Hi Joe,

Great website firstly!

I'm "attempting" to build a directory in Drupal 6 similar to this and was wondering how exactly you went about getting the listings to appear for the different locations?
I have used the modules that you have used but am still unable to get it to work.
My knowledge of Drupal is pretty basic.

joecanti’s picture

Hi,

You can use taxonomy.

Have a vocabulary with all the locations as terms, then tag your listings with the correct location, and use views to create lists of the listings, with a taxonomy argument (contextual filter). Then you can put that view on the panels taxonomy pages - so that when you go to the term pages, the view shows you listings tagged with that term.

This would be good for listings per county - for distance based listings (eg all listings within 100km of London) you'd have to use the location module and some sort of proximity search.

It depends on your businesses. My target businesses compete on a county level, so customers aren't really interested in who is the nearest - only who is in their county.

In any case, views is great for creating lists - and panels can provide somewhere to put those lists.

Hope this helps!

Joe

LadyVicious’s picture

Hi Joe,

Thank you so much for replying!
I felt like such a dope when I realised it was something so simple that was giving me such a headache! haha!

I was wondering how you went about getting the horizontal line between each of your listings.
I have tried to add custom CSS however it just appears at the end of my block block and not in between the individual listings.

Thanks! :)

joecanti’s picture

Ah no worries - these things are always simple when you know them, and always a real headache when you don't :-) - I've spent many Drupal hours scratching my head trying to work simple things out!

For the firewood review example, I'm using the Semantic Views module, where you can add a row class.

So, I added 'sup-odd sup-even' into the semantic views row class, in views.

Then this to my css:

div.sup-odd {
Css for the odd rows here (eg border-bottom: 1px dashed #ddd;)
}

div.sub-even {
css for the even rows here
}

In Drupal 7 I don't use that module, but it's easy to use firebug to find the CSS value given to the row, and then add some CSS. I think you can also add a row class to Views directly, and then add the css to your CSS file.

All the best, Joe