Die Beste Aller Zeiten

Going direct to heaven, going direct the other way

Category: Programming

Joomla! 1.5 Beginner’s Guide

I do have a love-hate-relationship with Joomla. I hate it because of its glacial pace of development, because I think it falls short as a framework and because of the quite simplistic ways it organizes content. I love it because slow development means you have a stable platform and because the easy-to-use admin interface allows even not too technical minded people to set up and maintain their own website without getting a computer science degree first. And I will always have a soft spot for Joomla! because this is the CMS that got my little business started.

Joomla! 1.5 Beginner’s Guide by Eric Tiggeler [1] is the book that will get you started with Joomla.

To make the best use of the book you should have some prior knowledge – namely, you should be aware that on the internet there are server- and client side processes, that there are such a things as “databases” to store your content in and languages like HTML and CSS to structure and display your text. You will not actually need to know all this stuff to make your website work (the book sees to that) but it will sure help you appreciate what the CMS does for you.

A Content Management System, Tiggeler writes, is like a coffee machine – you press a button and “the machine invisibly fetches all the ingredients […] to serve a cup of fresh coffee, latte, frapuccino or decaf”. Unfortunately, the analogy doesn’t end here. Every coffee machine is made of different parts and control elements which, while they more or less do the same thing, are labeled differently with every brand of machine. In fact I found that learning brand specific idiosyncrasies is the biggest hurdle you have to clear when learning a new CMS.

This is where the Joomla! Beginner’s guide comes in handy: It introduces new terminology step by step and in the order in which you will need it – no back and forth between different chapters necessary. And while each section introduces new terms and concepts on a need-to-know basis for the task at hand, by the end of the book you will have a pretty complete picture of what you can do with Joomla.

Each of the twelve chapters (covering topics from installation via content editing, template customization etc to search engine optimization) is divided into small, tutorial-like sections. Every section defines a discrete task (e.g. “add an article”, “edit the css file” ), provides (under the headline “Time for action”) a set of instructions on how to accomplish the task and explains afterwards “what just happened”, i.e., why things work the way they do. To round everything off, there is a summary at the end of each chapter and a quiz to test your newly acquired knowledge.

The book also exemplifies the proper perspective towards web site building: This is not about the technology, fancy as it may be. This is also not about you, the developer. This is about the people who visit your site, so you have to make the site usable (Chapters 5 to 8, content and menu organization), engaging (Chapter 9, “Enabling User to contribute and interact”) , attractive (Chapter 11, “Working with templates”) and, of course, easy to find (Chapter 12, “Attracting search engine traffic”).

The Joomla! Beginners Guide succeeds, not only because it is well-structured and comprehensive, but also because of its clear and simple language – Eric Tiggeler largely avoids metaphors and analogies which might be helpful to the English and Americans, but tend to confuse matters for non-native speakers (in fact, my own style is much more convoluted than Eric Tiggeler’s, so if you’ve made it this far in the review you will have no problems understanding the book). There is also some humor – the example site you are working on throughout the book is for the fictitious SRUP, the “Society for the Re-appreciation of Ugly Pictures” and I couldn’t help but smile when a screenshot announced an upcoming Bob Ross exhibition.

Of course, I have to do some nitpicking: I don’t know if it makes sense to introduce Content Management Systems as the next big thing when powerful Open Source CMS have been around for the better part of the last decade; I certainly do not agree that Joomla has “powerful multi-level site organization capabilities” (two does not qualify as “multi” , or powerful) and as a somewhat seasoned developer I’m silently gnashing my teeth when somebody suggest that CSS is actually quite easy. But then the book is a little like the IPCC Climate Report in that you really don’t want to dismiss lots of valuable information just because there’s something wrong with one or two inconsequential paragraphs.

You will not need the book if have already done a few sites with Joomla! and felt comfortable with the CMS. It does not contain any super-secret stuff , you will find all of the information on the Joomla! documentation pages or by asking in the Joomla! community forum.

But the Joomla! Beginners Guide is an excellent book if you have never worked with Joomla, or tried to build a site and got frustrated with the intricacies of the backend, or else, if you looking for a resource to train your in-house staff. And while most of your questions will be answered in the forum, this is the book that will give you an idea what to ask for.

I can’t directly compare it to similar books (having outgrown the need for Joomla Beginners books for some time) but I can still say that, specific software aside, the Joomla! Beginners Guide could very well serve as a benchmark for other writers; this is how introductory material should be written.

  1. Joomla! 1.5 Beginner’s Guide
    Paperback : 380 pages [ 235mm x 191mm ]
    Release Date : March 2010
    ISBN : 1847199909
    ISBN 13 : 978-1-847199-90-4

Timezone bugfix, new template

Version 1.2.1 of the placehere module did not work for some people – it would not show new articles. That’s because I had introduced a stupid error in the sql query that messed with the timezone settings. This is fixed in the latest version.

Also I added a template called “beez with article parameters”. That’s a tableless template that ignores the paramaters from the module settings pane (pdf+mail icons etc) and uses those from the article manager or from the article itself. Please note  that the included templates are more or less suggestions, with basic HTML you can build you own (leave the stuff inside the php tags alone and change the surrounding HTML). If youve done something clever with a template I’ll be happy to include it in the ‘official’ release of the module.

I also changed the default values for some module parameters to more sensible values.

If you have a previous version of the module installed it will be enough to overwrite the files to update (better yet delete the old files and upload the new ones).

Click here to go to the download page

    Class suffix, ordering, version number

    The module came with a bug in its template files, so the Module Class Suffix parameter was applied to the individual content items and not to the module. This is fixed now. So the module will have the class of mod_placehere, plus whatever you enter as a suffix; ‘leading’ items – the articles that span the full width even when the content is sent in columns – will have the class mod_placehere_leading; all others items will have the class of mod_placehere_following.

    I added a new ordering parameter “exact”, which will display articles in the exact order you enter the ids. This can be set only in the primary ordering (since the ordering can not possibly get more exact than the exact order. Or something).

    And finally I added a readme-file that will hold a changelog and a version number. Since this is the first time I use a version number I simply put version 1.0 in there, despite the fact that the module has been around for quite a while. I will stick to the usual scheme of x.x.x – major.minor.bugfix.

      Move Javascript to the bottom of the page

      I have blogged about this before, but right now I’m happy to repeat myself: The Yahoo Developer Network has excellent advice on how to optimize load time for your web pages, and the best thing is that so much of it can be easily implemented.

      Yahoos Rules for High Performance Web Sites start from the somewhat amazing observation that it’s not so much the response time of the server the time it takes the server to generate the page that slows down a web site but the things that happen after the HTML has been sent to the client.

      Most relevant for my case was that a) the browser makes a new http request for each ressource (style sheet, script, image etc) in the page (and the more request the slower the page) and that with external javascript files progressive rendering is blocked for all content below the script, meaning the rest of the page will not render before the script files are downloaded. An easy workaround is to call the scripts near the page bottom (though there might be scripts where this is not possible).

      I’m working on a site that uses prototype and various parts of the scriptaculous effects library, and I ended with six external javascript files. When I moved the script tags from the head section to the bottom of the page the load improved from about six seconds to two seconds (how do I know? I used Yahoos yslow to measure site performance).

      Now you might say that two seconds over a DSL connection is still pretty slow. But so far I have tripled load speed and it didn’t cost me more effort than a single cut and paste action – I call that amazing.

      I think most of Yahoos rules make sense only if you work on large sites with tens of thousands millions of visitors – I certainly will not set up a Content Delivery Network for a site with a few hundred visitors per day. Even so I think this proves that looking at the big boys can be a valuable excercise for us one man shops.

      I any case I’ve ordered Steve Souder’s (Yahoo! performance chief) book High Performance Web Sites – I don’t know if there’s anything in it that I couldn’t find as well on the YUI-Blog, but to buy the book seems a nice way to appreciate his work.

        Mod Place Here – Minor Updates

        I did some minor updates on the Place Here-module – partly just behind-the-scenes-bugfixing (including the issues in the comments 20 and 21 respectively) , but also two new parameters:

        • Link Titles – does of course what the name says and makes the title of an article a link if there is additional text (please note that articles displayed via the module will use the module settings, not the settings you make in the article edit view)
        • Hide current item – reads the article id from the url and hides the article with the corresponding id in the module, so you don’t have the same article twice

        Available at the Download page. This is still marked as alpha but apparently a number of people already use it without problems (the alpha status is more due to the fact that a number of features are still missing as compared to the contentitem module for 1.0.x).

        Edited to add: There are no special upgrade instructions. Simply overwrite existing files with the new ones.

          Avoiding tables with the Place Here Module

          The module uses tables in two places: a) as a wrapper to arrange content items – ‘articles’ as they are now called in Joomla 1.5 – in columns, and b) in the template file to format the articles.

          As for a) I added a parameter “Output mode” with the values “table”,”div” and “raw”.

          • table – just works like before
          • div – wraps the articles into div tags. The divs around “leading” articles have the class “mod_placehere_leading”, following articles the class, you guess it, “mod_placehere_following”. No CSS is delivered with the module, so you can/have to style the divs on your own (for example set a width and use a float on “following” articles to get a column effect for the articles)
          • raw just prints the content items on the page, without any additional markup

          To get b) rid of the remaining tables you will have to fiddle with the template file. Unlike in the module for 1.0.x the module does not use the content componentes template but has its own template file in modules/mod_placehere/tmpl. Change the HTML but don’t mess with the PHP Code. In time I will attempt to provide a tableless template.

          Tested with 1.5 RC3 on PHP 4.4 / Windows XP Home. Available at the download page .

            To the moon!

            Autumn is killing me (metaphorically) – with shorter days and the lack of sunlight I’m continually tired, an at the moment I’m glad when I finish paid work in time, so I would ask the people who asked for held for a little more patience (I know I make these excuses quite often, but there you go).

            So while I can’t provide an update on the module I can at least give you a small update on what’s happening in space, because these last few days have been a good time for space exploration.

            At Oktober 21. a soyuz capsule returned to earth from the ISS; part of the crew was Sheikh Muszaphar Shukor, the first astronaut from Malaysia. I was actually a little annoyed that his religion was so much a matter of public display – but then it’s probably just fair, Christians did it before with bible readings from orbit, and one has to commend Malaysias religious authorities that they managed to reconcile not religion and rationalism, which I think is impossible, but at least religion and pragmatism in such matters as prayer times and such. But as a life long Saganite I’m much more pleased with international cooperation.

            A new crew member and new equipment is on it’s way to the International Space Station with STS-120 and the Orbiter Discovery. Shuttle Commander Pamela Melroy and her Crew deliver a new module – Node 2 a.k.a “Harmony” – to the station which will mainly serve as a connection point for other modules, including the european Columbus. Speaking as a european I can hardly wait. And it’s time that a bit more science happens at the ISS.

            The International Space Station has been pretty much a failure so far, and I think this can be largely attributed to the fact that construction lags so far behind the planned schedule – Russia had a delay in manufacturing station components and there was another shuttle accident and the thing is by now much more expensive than planned (I nearly wrote “as expected”) and generally things haven’t been going to well. Phil Plait of Bad Astronomy fame hinted somewhat subtle (and a number of commenters brought the point home quite bluntly) that the station should be dropped althogether (if this were possible). I usually agree with what Dr. Plait says, not so much because he’s an expert but more because he is an expert who will happily eat his own words if it turns out he was wrong. But I still think the station should be finished, because if we – and it’s “we”, this is an international project – can’t even finish a project more or less at the front door then how can we ever think about building more ambitious projects (like e.g. interplanetary spacecraft) ?

            But maybe there should be a lesson learned for later projects. I’m all for international cooperation (that Sagan thing again), but if possible partners should contribute complementary, not interdependent parts, so that a mission can still be sucessful when one piece is delayed or even fails.

            Of course some people try to do things on their own (especially since they were obviously shunned from working on the ISS, I hadn’t been aware of that), which makes for the most exciting news – China has sent the Chang’e 1 probe to the moon, and that is only the first step in an rather ambitious space programm that is supposed to sent a man to the moon in the next 15 to 20 years. I guess by now a manned flight to the moon is not so much a matter of available technology and more a question if you are willing to spend the ressources (I’d venture that a moon base would be less expensive than the US war in Iraq…), which makes China the best candidate for a return to the moon – the Chinese seem to only ones willing to pull this off. Perhaps if we ask nicely they will sell us some tickets 😉

            And speaking of the moon, Japan Kaguya probe has now reached an orbit from which it can start scientific observation – it’s a pity I don’t speak japanese (or ‘scientese’ for that matter), but I expect sooner or later some bits of data will trickle down to us english-speaking laypersons.

            As I child I used to watch Space 1999 on television and being a child an sometimes unable to distinguish fiction from reality I was convinced that there would be a permant presence on the moon by the time I would grow up and I could buy a ticket to get there. Most annoyingly this hasn’t happened. But even if I can’t go there I hope somebody will.

              Q and A for the Content Item Module

              I received two nearly identical questions about the content item module, one of which I quote here:

              Im using the module on the front page in joomla 1. When I press the read more… link it opens the article, but it stays on the front page. So things I have displaying only on the front page are still there, and the breadcrumb system doesnt work.

              Since I haven’t had time to look thoroughly into it I haven’t submitted this to the FAQ, but it’s most likely a problem with the changes as per Joomla 1.0.12 in the way itemids are handled. I think Joomla 1.0.13 has a compatibilty backward setting for itemids, so you should try that first if you have the same problem.

              UPDATE: My guess was correct and this has been submitted to the FAQ. Alas that means there’s no easy solution for 1.0.12 (which lacks the compatibilty setting), anybody who cannot update from 1.0.12 to 1.0.13 should contact me (I won’t bother to think of a fix unless I’m asked to).

                A Problem with Javascript libraries

                A couple of days ago thelist – the mailing list of the evolt web developer community – had a short discussion about javascript libs (like e.g. jquery). Do they help with coding or not – i.e. do they help you to become an actual programmer or are they a simple way to do nifty stuff that you don’t actually understand?

                I couldn’t contribute to the discussion, but still I’d like to mention here one of my problems with libraries. I often take over maintenance for sites that have been deserted by their original programmers, and usually when one of these web geniuses spontaneously combusts he burns with him all documentation. One of the sure signs of a web prodigy is that comments in the frontend code usually fail to tell anything useful. Instead I find little essays on why “Javascript sucks”, which is why they have used this amazing library (usually nebulous 0.1 or the promiscuous 0.0.5 pre-alpha) that allows for otherwise unsurmountable tasks like adding a rollover to an image or toggle display of a named element (and even if they used one of the better known scripting frameworks there are still at least a ten or twelve to choose from). So instead of programming in the one language javascript, which I by and by get the hang of (mostly due to Christian Heilmanns excellent book and web site) I suddenly have to look up documentation for a dozen or so libraries. And sometimes I wonder why my predecessors bothered at all to include a couple of hundred kb worth of Javascript when they then decided to rather use some method they’d concocted themself.

                This is of course not an argument against libraries – I think by now it would be somewhat insane to built a Rich Interface Application without a javascript framework – but I still have to say that the purpose of libraries is often defeated at my end, when simple Javascript would be much easier to understand and maintain.

                My suggestion would be not to use libs for the more mundane tasks but rather small, well documented scripts, never to include a library (or worse, multiple libraries) just because it has one effect that you particularly like and, if you can’t help to use a library then to actually use it and not replace parts of it with your own functions.

                And if you are interested in Javascript your really should visit Chris Heilmanns web page wait-till-i.com (it feels a bit strange to advertise for him, since he’s some kind of web guru and I’m a goofball from Berlin, but still). While many people still look at JS as something that is slapped on top of a web page he sees it as a regular programming task, which means that the task at hand gets analyzed step by step before he starts writing code. I tried it and was amazed how much time you can save by taking the long way round.

                  Powered by WordPress & Theme by Anders Norén