Note that this site does not run on Joomla any longer but WordPress is used!
Joomla is a powerful content management system well suited for running almost every kind of web site. And it is open source, free of charge although to get the most out of it, you sometimes have to buy some commercial extensions. In this article I will describe some of the basic setup of this site from an architectural point of view. Thus this article contains considerations about the mandatory features and gives some hints to implement them, but it is not a step by step tutorial.
Mandatory requirements overview
As we are German company but will be targeting international customers in the future, there is a strong demand for having the site multilingual, i.e. German and English
Layout for mobile devices
Doing development for iPhones it is necessary to provide an iPhone look and feel without having to much extra work
Integrating development blog
The development blog hosted at blogspot.com should be either integrated or migrated with reasonable efforts
We want to monitor the customers’ location, hardware, browser, etc. to get an idea in what kind of information they are mostly interested
Easy integration of future marketing actions
Although not today but Google AdWords or similar things might be important one day
Integration of social networks and RSS feeds
Social networks are a must have today but there are far more activities in development fora that are worth to be joined together and republished as own feed
- Sustainable approach
The system should be robust against future updates with lowest possible maintenance efforts
Multi language support
Joomla 1.7 core system has general multi language support without need for any plugin. But other plugins can be confused by multilingual setup. Thus it was essential to set up the basic layout in both languages from the scratch and test every plugin against it. Recommendations:
- Define appropriate menu associations for every menu item. Thus if a user gets to your site via external link and likes to switch the language s/he will be on the corresponding page, otherwise the home page is displayed
Blog integration / migration
Integration of an external blog can be done by RSS feeds but there is always the missing link between both worlds. Writing an article that contains links to related blog entries needs external URLs then which is bad, because any future migration of the blog leads to an ugly manual revising of Joomla article. So we decided to migrate the blog, because there were only 6 articles, 3 of them published. Our recommendations:
If possible use a professional blog component in Joomla like EasyBlog. I can highly recommend it as easy to maintain and their support is really awesome.
If you don’t have the budget there are some smaller extensions like EasyTagCloud or FJ Related Articles Component but you have extra work because of administration of meta data and in the end I alway found something which does not behave like a “real” blog
- We had our old blog hosted at Google using a separate subdomain blog.scio.de. If there are referring links out there you don’t want them to get 404. So you have to provide some URL mapping like blog.scio. de/2011/08/whatever.html => www.scio. de/blogs/en/whatever The Joomla component Redirect seems to do the job at first glance but failed to handle a reasonable multilingual support, because the language switcher adds an en/ or de/ as first (virtual) folder name. This turned out to be a problem for the redirect component
We ended up in editing some mod_rewrite rules in Apache configuration
Layout for mobile devices
Mobile Joomla seems to be leading choice and it is open source. Very professional component, easy setup and good support. Two points have to be stated:
A hierarchical menu structure in more than one language seems to be not supported by now, but maybe there is a workaround or a future update for this issue. I posted in their forum and I am optimistic to get a solution
- By default the plugin display ads and for a business site this is not tolerable, especially if the first ad ever deals with some prostat stuff. But the developer provide a Remove Support Ads plugin that stops these ads. It is a pity to be not able to support these guys via PayPal or whatever because they do a great job
It is more efficient to use the Mac’s or PC’s regular browser for testing than doing it on the mobile device itself. To accomplish that you have to provide a subdomain for mobile users – look at http://mobile.scio.de. This is primarily done for convenience because the style is selected according to the client anyway when visiting https://www.scio.de.
Integration of AdSense, AdWords or whatever will be easier
- Piwik requires more CPU power and we are currently hosted with a medium sized hosting contract
Because we are a German company there are some special considerations regarding data privacy. I will cover these in a separate posting (probably this time in German :-). For that it was essential to have a plugin that provides anonymisation of IP addresses. I found RW Google Analytics a good choice. It’s really very basic but does what I need, anonymisation and filtering of internal users. Other extensions try to rebuild Google Analytics inside of Joomla
Social networks and RSS feed
EasyBlog comes with full integration of Facebook, Twitter and all other relevant social networks. For all others we use the free plugin ITPShare. RSS feed integration was a bit trickier. OK, having a single RSS feed integrated into your site is just a few mouse clicks away. But I wanted more … than one feed but a bunch of feeds aggregated into one new feed that is displayed. The reason is that we are posting in several fora and Q&A networks (s. for example Hit 1k Reputation at Stack Overflow) and we wanted to publish these postings automatically instead of retweeting it or writing separate articles. The solution was a combination of Google Reader and Feedburner described by rahmadadhita in Combine Multiple Feedburner Feeds Into One Feed Using Google Reader and this was enhanced by online bookmarking i.e. whenever a forum does not support public RSS feeds, we put a bookmark of this posting in public bookmarking service area, where it can be read via RSS.
Robustness against updates
Joomla follows a model view controller (MVC) pattern and allows you to separate your customisation from core modules. From a user perspective (I did not have the time for a deeper look as developer) this is accomplished by CSS, plugins, different encapsulated PHP modules, … If you are setting up a site you should at least follow these rules:
Use overrides for language resources
Modules’ language resources are located at /languages/xx-YY/xx-YY.mod_somemodule.ini. Don’t edit these files, instead create /languages/overrides/xx-YY.override.ini files and place your customised strings there.
If you really need to change PHP files this can be done non-intrusively by copying the source into the template’s html folder and editing the copied file. For example if you want to change the code of the contact form, just put a copy of the module’s default_form.php into /templates/mytemplatename/html/com_contact/contact/ folder (create it if necessary) and edit the copy.
Create your own stylesheet for overrides
Don’t touch the css files provided by your template, instead create your own copy and include it as last css in the template’s index.php. Even better use a double layer approach because you will have to disable all your styles sometimes for testing against the defaults. Just insert into your index.php
myabstract.css just contains of one line including your actual style definitions:
Thus you can disable all your styles by commenting out this one line
You might be interested in my other posting Adding A Customised CSS to Joomla’s Beez 2
MaxiMenu CK is a nice open source menu plugin. If you like, buy the 9€ documentation. You won’t need it but I think it is a good way to support the developers. The same applies to the following recommendations.
Akeeba backup is your friend and might have saved more than one employee’s life
Akeeba Admin Tools will help you to make your site more secure
JA T3 2.0 templates look very good but I did not mange to get them running in my multilingual environment. After spending hours over hours I gave up and used beez 2.0 instead. Maybe you have more success, I think it is very good approach
- If possible, set up a special subdomain for your mobile access in order to test the layout on your Mac/PC. Look at mobile.scio.de for example
- SP Thumbnail is small plugin that allows you to resize your images within an article. On click event they show up in original size rendered as separate window
That’s it so far. I hope this will guide you through your first steps and decisions and will give you some hints about the pitfalls out there. Feel free to contact me or leave a comment.