To this day I don't know how that TYPO3 (http://typo3.org/) website worked. It was built on some ancient version of OpenSUSE and MySQL. There was one person responsible for the website, but he didn't have to do anything, because it all just worked.
Nothing is eternal. One day in 2010, the site crashed. It showed the list of news, but you couldn’t access anything. For two months the webmaster tried unsuccessfully to repair the site. I began helping him, and discovered an error in two MySQL tables that was not related to TYPO3. I corrected the MySQL errors and the site began to work again.
But, the company Director wasn't satisfied, and decided that a new platform was needed that wouldn't require months to repair. So a new site was created by a web design company in Joomla 1.5. Once completed, I became the person responsible for maintaining the site. I wanted to avoid long repair times, so I began to study Joomla, how to work with MySQL, and so on. At the time I didn't even know Linux!
To speed up my learning process, I needed a specific task – a goal to accomplish. By that time, Joomla 1.6, and then 1.7 were released. All the forums were filled with questions like, “Help! How do I change from Joomla 1.5 to 1.6?”. “Wow!”, I thought, this is a perfect task for me to check my Joomla/Linux learning skills.
Over the next six months I completely rewrote the site, almost from scratch. There were many reasons for that:
- Some extensions weren’t adapted for Joomla 1.6. One of them (com_rd_rss) was only designed for Joomla 1.0 and ran in Joomla 1.5 with compatibility mode.
- Some extensions were extremely powerful, but extremely slow. I did not want so many options, so I hardcoded things to gain more speed.
- Joomla 1.5 couldn't work with php 5.3, but phpMyAdmin (which I used to work with MySQL databases) didn't support php 5.2. I had to switch php versions back and forth. Joomla 1.6 supported 5.3, and so php 5.2 was dropped.
- I replaced Search with Smart Search
In this way I was able to greatly shrink most of the extensions (50-70%). The site looks identical to the Joomla 1.5 version, but has been almost reborn. I use Gentoo Linux for it, because of it flexibility.
Here is the list of extensions used:
- Mod_jalendar for viewing articles with any date
- Mod_lastupdate for viewing last site update time
- Com_rd_rss – completely rewritten from 1.0 to 2.5 module for RSS feed
- Mod_gk_weather – shows weather from Google Weather API
- Mod_roktabs – for some effects on the home page
- Mod_allnews – for showing news
- Com_smfaq – for communicating with users
- Com_jcomments – for commenting the articles (this is the only component which was not rewritten – because it has a newer version and because it was too long to change)
- Plugin Jw_allvideos for showing flash videos on the site
- One interesting thing is the "stub" module. It doesn't do anything – it is empty. If you look at the home page <A href=gtrk-kurgan.ru>About our site</A> you will notice that the component is completely absent – there are only modules here. So our template checks: if "stub" module present, the component output is omitted.
Since then, the site has changed from time to time. The site is now running on Joomla 2.5.
Here are some of the most recently implemented changes:
- The mod_gk_weather module was rewritten, because Google decided to close its Weather API, and we were forced to change the weather source to gismeteo.ru.
- I wrote a new module – mod_slider – it shows a slider in the bottom of the home page and uses jQuery.FeatureList. It’s a pity to have to use Mootools and jQuery (with noConflict) at same time, but I think in Joomla 3.0 / 3.5 things will change.
- I am beginning to connect the site to social networks – Facebook, Vkontakte, Odnoklassniki (the latter two are our main Russian social networks). It is likely that we will connect our site to Twitter too.
I am looking to the future with enthusiasm. There is Joomla 3.0 coming, which promises many interesting features – Twitter Bootstrap with its .less compiler, PostgreSQL support. And it will be easier to transfer a site to a new version, of course. I love this kind of work.
In the future, I’m planning to divide the site to several OpenVZ virtual machines to increase its modularity, change the database to PostgreSQL, and add Sphinx search instead of Smart Search (to support grammatics in searches). When the support of Mootools is dropped in favor of jQuery, all .js files will need to be rewritten again. There are so many things to do!