Nov 21 2007
Building a Large Community Site with Joomla Print
Wednesday, 21 November 2007

This is the first of several guest posts here on the Alledia blog. Brian Teeman discusses building a large community site with Joomla.


We welcome other guest posts. Simply login and click "Make a Guest Blog Post" in the right-hand menu.

About My Jeneration

Jeneration.orgJeneration.org aims to engage Jewish young adults, in the UK, in new ways and on their own terms. It provides:
  1. A space where you can expand your social networks, making connections with others wherever they may be; geographically or Jewishly and let others know about cool stuff you've come across.
  2. A space where you can find out what is going on, publicise your events .
  3. A space for expression and debate, a platform where your voice will be heard. Here you can engage with contemporary issues and have your say, sharing a desire to make a difference to the world we live in

Enough about the aims of the site ... how did we achieve them?

Jeneration.orgAim 1: Community Builder, Group Jive, Bookmarks and more to the rescue

Community Builder (CB) is the heart and brains behind the social networking aspects of the site. It provides everything we need for user management and together with Group Jive allows our users to create their own special interest groups etc. Bookmarks and RS Gallery allow users to both submit links and images for everyone to see and for them to be stored in their CB profile page, whilst Seyret does the same for video clips. There was very little modification required to these as they did exactly "what it said on the tin".

We made one small modification to the CB login module which resolves a personal complaint of mine when visiting a site. Its easy to see the login box but it isn't always obvious why you should create an account in the first place. So now there is a prominent "Why Should I Register?" link within the module.

Aim 2 required the most custom development

The aims for the site required a full featured "What's On" section that was both visually appealing and easy to use. The closest fit was Eventlist from schlu.net although it only offered a partial set of the required functionality.

  • Tag an event as "featured". This was perhaps the easiest hack to achieve. An extra field was added to the events table which then allowed an event to be tagged as "featured". This meant that we could modify the query in one of the existing "Upcoming events" modules to only display those events.
  • Events in multiple categories. The aim was to allow an event to be placed into up to 3 different categories. This was fairly easy to achieve but did require the code to be changed in many places and took a bit of time to find them all. 2 extra fields were created in the events table to store the additional categories and then ALL the queries had to be altered to ensure that they were included when searching for an event.
  • Enter short and long descriptions for each event. Here the aim was to modify the default category view so that it displayed a short description for each event with a longer description in the events detailed view.
  • Transform all event and location images to ensure a consistent style. As the site is designed primarily for people to add their own events it was a concern that all the uploaded images would need editing to maintain a consistent look and feel. Obviously we wanted to reduce the administrator work load as much as possible so some javascript was utilised to modify all the images at display time.
  • Convert all event dates from text to dynamic images created with css. The designer of the site wanted the display for each event to be more visual than the default especially regarding the date. To address this a css trick was used to reformat the dates from plain text to a more appealing image. By using css to achieve this, rather than creating an image for all 365 days the display and load time is kept to a minimum.

Aim 3 was fairly easy to achieve

A combination of JA_Submit to handle user submitted articles, JomComment to allow people to discuss the articles and TAGs from phil-taylor.com to provide new ways of finding the content.

One thing we wanted to do was to make the name of the author a link to their biography. For those authors who were members of jeneration.org this was easy to do as we just had to link to their Community Builder profile and this was done using CBAuthorbot. However the site also features articles from guest contributors, many of them regular contributors to National newspapers and it wasn't appropriate for them to create a CB profile. So instead we utilised an other bot called "BK Author Link" which links the name of the author in joomla content items to a biography "content item". After a little experimentation we found that the two bots could co-exist with each other as long as the Author link bot was processed before the CBAuthorbot.

One side effect of installing JomComment, TAGs and the CBAuthorbot was that by default they are applied to all content items and sometimes you just don't want people to comment or add tags to an article. JomComment handles this by allowing you to limit which categories it is to be active on. However TAGs and the CBAuthorbot achieve the same on a per article basis by inserting a mambot tag in the head of the article, {!CBAuthorBot} and {hidetags}. We felt that it was too much for "simple" editors to remember two tags so we replaced them with a single tag {hide} using the JosReplace component. Now all our editors need to remember is one simple tag. [NOTE: we use JosReplace across the site to resolve many other repetitive tasks and to allow our editors to use a common shorthand]

"If you build it, they will come"

It may have been true for Kevin Costner in his Field of Dreams but just building a site is not enough to get people to use it. Sadly there is a 90-9-1 rule when it comes to users in online communities. 90% of users are lurkers who never contribute, 9% of users contribute a little, and 1% of users account for almost all the action (source USEIT.com). So it is really important to ensure that as many people as possible know about the site and to provide the tools for users to easily "invite" their friends to join them. One way that Jeneration.org achieves this is using the PLAXO Invite component as this will allow a user to easily invite all their friends from their email contact list.

The Extra Bits & Pieces

Every site is searching for the extra things that will attract users and keep them coming back. As these are the missing piece of the jigsaw for many sites we've chosen to add several rather than rely on one person's idea. We have streaming radio stations, newsfeeds from relevant sites all on one page, a "fridge magnet" where users can leave messages or even write poetry for others to see and my personal favourite a "polaroid gallery" .

The Site Design

Jeneration.orgPersonaly I have always felt that it is more important to start creating a site by first determining the content and not the design. Sadly, for me, Jeneration.org approached this the other way around and a design was created in photoshop by an agency with no experience of Joomla. This created many challenges for Arno Zijlstra, who was contracted to create an accessible Joomla template from the photoshop design. The first challenge was to create a template with a different layout on the frontpage than all the other pages. Arno achieved this by using a php switch to determine if we are on the frontpage or not and then loading the appropriate template layout based on the result. This perhaps could have been achieved using multiple site templates but Arno's aproach allowed for easier management in the long term.

The second and larger challenge was that the site called for a specific, non-web standard font, to be used in all the module headers. We played around using SIFR for this but it added considerable delay in page rendering that was not acceptable. Another option was to create an image for each module header but again this was slow and had the effect on slower connections of watching the page being built before your eyes. The innovative approach Arno implemented was to have one image that contained all of the module headers and then using the module class suffix to select the correct portion of the image with css. This means that on the first visit to the site all the module header images are downloaded in one go and are available localy on the users computer for all subsequent pages. This did not increase the initial page load but all subsequent pages are rendered very fast as there are no additional images to download.

Unfortunately a majority of the modules used did not have the facility to assign a module class so we had to add that to the module. It was such an easy job that it is suprising that all module writers don't do it. The code for this is available here.

Lessons Learnt and Top Tips

When building a complex site such as Jeneration.org it is all too easy to end up with a list of installed modules that is very difficult to manage, especialy for someone like me who wants to install every module available for a component to try them out. The solution I've found that works best for me is to create three extra module positions in the template manager, these are z-to_test, zz-not_used and zzz_core_not_used. This allowed me to keep all the unused modules at the bottom of the list in module manager and to easily see what was still to be tested or to be uninstalled.

If there is more than one person building the site then it is important that you are all kept informed on what you have each done and wether the work is complete or not. There is nothing worse than logging in to find the previous days work broken without knowing why or to receive an email that the feature you just added isnt working when you are still working on it. Everyone has their own way of working when it comes to project management and we used a combination of email, Project Fork and HP Todo List. The latter admin module was perhaps the most useful as it provided a quick and easy notepad for all the developers to use and it was always visible in the admin control panel when you logged in.

Finaly there can be no greater tip than to get to know the developers of your chosen extensions. If you find a bug let them know, if you miss a feature let them know, if you add a hack let them know and most importantly say thanks. During the development of Jeneration.org we have tried to feed all of these back to the developers and in many cases we have been rewarded by quickly seeing our bugs, missing features and hacks implemented in future versions.

Similar Site in Joomla 1.5

If you'd like to here a similar overview of a site in Joomla 1.5, listen to Pete Russell's excellent interview with Rob Clayburn of Bobble.net.


Comments (14)Add Comment
...
written by Zorro, November 22, 2007
That is an exhaustive description which contains lots of useful hints! Thanks for the insights Brian.

I especially liked the parts about the module headings and your creative use of module positions for a better overview in the backend.

Good job on the template as well! Although the fixed background makes it a bit harder to use for Firefox users (I'll never understand why Firefox slows down so dramatically when a site uses the "fixed" CSS property).

Overall, the site is a great example of how a social networking site can be built with Joomla. I wonder about one aspect though: SEO doesn't seem to have played a role in the site's concept?

Compliments and kind regards,
Zorro
SEO
written by Brian Teeman, November 22, 2007
You are quite correct about SEO optimisation currently being missing from the site. That's on the todo list for the next stage of the site. In particular we will be working to ensure that HEF (Human Ear Friendly) urls are available for all the major landing pages of the site.
Eventlist : so usefull hack
written by Marc, November 23, 2007
Hello
WHat you made on eventlist is very good optimization of the component.
I have a project for making a website with all the hiphop events in Paris
Is there a way to have the eventlist component with your update?

DO you give it? Sell It?

thanks

Great article
Eventlist customisation
written by Brian Teeman, November 23, 2007
Details of all the customisation/modification that was involved with eventlist can be found at the home of eventlist http://schlu.net.
Brian, Awesome site
written by Chase Garbarino, November 30, 2007
Brian, your site and analysis are incredibly helpful! I noticed you mentioned in a post on community builder's forums that you had created a CB plugin for the Bookmarks component and I was wondering where I could purchase/download the plugin. My site, www.TheCampusWord.com, is a network for college students in media who want to showcase their work and I would love for them to be able to put their links/bookmarks in their profiles for others to see! I would love to speak with you about the site if you wouldnt mind!
...
written by Good Web Practices, November 30, 2007
Looking at this site again, it just shows the complexity of building large community sites!!! Certainly no easy task.
Awesome Site
written by Chase Garbarino, November 30, 2007
Hi Brian,

Awesome article and jeneration is very cool. I noticed you had mentioned in a CB forum post that you had developed a CB plugin for booksmarks. Can I purchase this plugin from you? My site, www.thecampusword.com, is a networking site for college student in media to show their work and I DESPERATELY need a CB plugin to show links/bookmarks in profiles. Thanks so much!

Chase
CB Bookmarks
written by Brian Teeman, December 01, 2007
It was just a hack of an existing plugin. If you contact me directly I'll forward it to you
Similar Community Concept for Massage Professionals
written by Shonn Piersol, January 23, 2008
I am quite the novice to Joomla, but have pieced together the same path you took for your site. I doubt I have anything arranged or packaged that you do not already have access to, but if after checking out my site you have any questions, ill certainly be glad to help.

I may need your support as our site grows as well. And as for SEO and SEF URLS i definately need help smilies/smiley.gif

Shonn
...
written by Steve Burge, January 23, 2008
Hi Shonn

Thats a new Joomla community site? Its very well done indeed.
Thanks for the tips!
written by Barkley, February 05, 2008
I am also building a community pet site. Your ideas around modifing the CB login are very helpful. I wonder if anyone here has been able to find better customization of the CB profile page. That is the one element on a community site that always needs the most work.
...
written by chadonline, February 07, 2008
I am working on a joomla site for our community , is there a way to share the jeneration.org template with us?

thanks
chad
Working on a chat and community site
written by Chat Rooms, February 29, 2008
Hi, I'm working on another community site using joomla and community builder but focused more on online chat. I'm also using jive groups and seyret video. I do like the template they are using for jeneration though, I've kicked around doing something similar for ours but haven't quite convinced myself to make the change.

Does anyone know of a good way to index all of the cb profiles without eating a ton of memory? I'm using advanced search but it is really buggy and really doesn't work well but since so far it's the only component I can find I'm stuck with it, but when you do a search all it eats too much memory as we have about 10,000 members so I'm sure that the search engines can't find the profiles to index them killing us on contenet. Even a good sitemap that would somehow pick up all of the profiles would be great.
...
written by guido, April 30, 2008
Did anyone try http://hwdmediashare.co.uk/ ?
It is very promising, integrated with many components/services outside, and they are very responsive to community requests!
still not 1.5 native, though... (it will be...)

Write comment
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
smaller | bigger

busy
 
Joomla SEO Club and Book Logo
Search
Login
Blog Details

Subscribe by RSS

Creative Commons License All blog articles are licensed under a Creative Commons Attribution 3.0 United States License.
Top Comment Posters
Good Web Practices
(114 comments)
Klaus Nitsche
(78 comments)
Brian Teeman
(68 comments)
Hummerbie
(35 comments)
guido
(34 comments)
Ansiklopedi
(30 comments)
Amy Stephen
(29 comments)
Yannick Gaultier
(28 comments)
Cory
(27 comments)
Anthony Olsen
(18 comments)
Translate
right