Follow Slashdot stories on Twitter


Forgot your password?

Learning Joomla! 1.5 Extension Development 73

Michael J. Ross writes "Every major content management system (CMS) offers considerable functionality for building Web sites out of the box. But to get the most out of any CMS, its functionality must be extended through the addition of modules, most of which are created by third-party developers. For instance, a given CMS may need to be supplemented by an e-commerce module in order to use that CMS for building an online store. Joomla, one of the most widely used CMSs, is no exception. Web developers interested in creating their own Joomla extensions can read Learning Joomla! 1.5 Extension Development, authored by Joseph LeBlanc." Read below for the rest of Michael's review.
Learning Joomla! 1.5 Extension Development
author Joseph LeBlanc
pages 284
publisher Packt Publishing
rating 7/10
reviewer Michael J. Ross
ISBN 978-1847196200
summary An introductory guide to creating Joomla extensions.
Released by Packt Publishing on 11 December 2008, with the ISBN 978-1847196200, this book can be considered the second edition of LeBlanc's previous effort, Learning Joomla! 1.5 Extension Development: Creating Modules, Components, and Plugins with PHP, published almost exactly one year earlier. Oddly, this second edition has the same title as the first (though a different subtitle), and yet is not identified by the publisher as a second edition. This is not the first Packt Publishing book whose second edition was instead given a slightly different name — a practice that may prove confusing to readers who could be uncertain as to whether an older book by the same author contains different material and thus should be purchased as a supplement to the newer book.

Nonetheless, this revised edition strengthens Packt Publishing's position as a leading — if not the preeminent — publisher of technical books devoted to CMSs. The firm makes available a Web page for the book that offers a detailed description, the table of contents, all of the sample code used in the book, and a free sample chapter ("Using JavaScript Effects," Chapter 8). There are links for submitting feedback, contacting the publisher with a question, and ordering the electronic version of the book, which is now available at a reduced price — even more so when purchased with the print version. Errata are not available on this book-specific page, but instead can only be accessed through the Packt Publishing support page, where the visitor has to find the particular book again. The publisher should move the links for sample code, errata, and feedback, to each book's individual page. As of this writing, no errata have been reported for this second edition.

At 284 pages, Learning Joomla! 1.5 Extension Development is certainly not overwhelming in size. In fact, one of the most common complaints about the first edition was its small size (176 pages). The revised edition's material is organized into a dozen chapters, covering a range of topics: an overview of Joomla and extensions; starting to create the example extension; interfacing with the Joomla database, and MVC; creating a front-end interface; use of JavaScript classes; a module for listing pages; user interface enhancements to the extension; JavaScript effects; creating three example plug-ins; adding configuration parameters; adding e-mail and internationalization features; and bundling all of the created elements into a Joomla archive file for distribution.

As with most if not all similar Joomla books, Learning Joomla! 1.5 Extension Development assumes that the reader has a solid understanding of PHP and MySQL, as well as some familiarity with administering a Joomla site. Absolutely no prior knowledge of Joomla extension development is required, and as a consequence this book can be a guide for any PHP programmer who knows how to install and administer Joomla, and wishes to take it to the next level through the development of custom Joomla extensions.

In the book's first chapter, LeBlanc explains the purpose of extending Joomla, and the advantages of this approach over hacking the Joomla core code in order to customize a site's functionality — a principle that should be known by any developer familiar with CMSs. He briefly discusses how Joomla extensions fall into five categories: components, modules, plug-ins, templates, and languages. The chapter continues with brief descriptions of what the subsequent chapters will cover — much of which is redundant, since that is already covered in the preface. This unsubstantial chapter next presents a brief mention of the example project to be created throughout the book (a restaurant reviews site), but offers no project requirements, constraints, or design parameters. Also noted are the requisite technologies one will need for creating the project on one's own: a Web server, PHP, MySQL, and Joomla 1.5. This chapter, like all others, ends with a chapter summary.

With Chapter 2, the author and the reader get into the actual technical content of the book — and not a moment too soon, having at this point passed more than five percent of the pages that follow the table of contents. This chapter's material should be especially welcome to any reader completely unfamiliar with Joomla components, because it explains how they are structured, how to execute them, the separation of front-end and back-end (administrator) directories, and how to register a component in the database (thereby enabling navigation to that component's page). Code and examples are provided that show how to create primary and secondary toolbars for the example project, as well as the native toolbar buttons. On page 17, the use of '_JEXEC' to prevent direct access to a Joomla PHP file, is explained three times; once would be enough. In fact, most if not all times that this (recommendable) technique appears in code in later chapters, its purpose is explained all over again.

One of the essential chapters for getting started on the example project, is the third, which discusses back-end development for the project, beginning first with the database table and its corresponding JTable class, for holding the restaurant reviews information. The discussion of best practices for a table prefix is a good idea, but many readers would most likely have appreciated some illustrative use of the inherited JTable methods. Next, the author briefly describes how the model-view-controller (MVC) design pattern can be used to simplify the code that will be written for the example project, and then explains the basic ideas of MVC, even more briefly. Naturally, the order of these two discussions should have been reversed. The chapter concludes with coverage of the Joomla code for creating the project's forms, as well as processing and managing the data.

With the fourth chapter, LeBlanc temporarily switches to front-end development, and demonstrates the Joomla code that allows visitors to the example project site to see a list of restaurant reviews, view the details of each, read comments posted by other visitors, and post their own comments. In addition, the use of search-engine-friendly (SEF) links is explored, including how to create and parse the needed HTTP request variables' parts.

In the subsequent chapter, the author steps the reader through the process of implementing profiles of restaurant critics in the example project — and in turn illustrates how to override JTable methods, sort records comprising database query results, track how many times particular records are viewed, implement record check-out and check-in functionality (for collaborative editing), store user information, generate page elements using the JHTML class, and enable user ordering of displayed records by using the JPagination class.

Module development is the focus of the sixth chapter, which explains how to register a new module in the Joomla database, how to create and configure one, and how to build and use a helper class. In Chapter 7, the lengthiest of all, the author explains how to: modify a controller to publish and unpublish articles (with a nice example of making a function more generic), delete database records, prompt the user with a confirmation dialog box, redirect the user to an alternate page, require user input for form fields using JavaScript, paginate any large number of records when output, search all available records and display the results, place toolbars within views, and implement user comments. On page 133, when LeBlanc states that "the backend does not work with JavaScript turned off," he should clarify whether he is referring to the Joomla administrative back-end or the example project back-end.

As Web developers increasingly utilize JavaScript libraries within their Web-based applications, the same is happening within the major CMSs, including Joomla and Drupal. In Chapter 8, LeBlanc shows how Joomla programmers can use JavaScript for creating modal boxes (using either raw HTML or views), tool tips, sliding panes, and Google Maps integrated with one's Joomla site. In the discussion of configuring modal boxes, the height and width parameters in the sample code certainly do not match the appearance of the figure on page 167. While most of the chapter makes use of the (native) MooTools library, this portion of the book is capped off with an examination of an alternative, jQuery, which is becoming quite popular. The author wisely provides some valuable advice to any reader considering using both JavaScript libraries simultaneously.

In Chapter 9, the focus shifts back toward more conventional Joomla extension topics — specifically, plug-ins. The author shows how to register new plug-ins in a Joomla database, how to create them, and what events can be registered (as functions in your plug-in), such as a user logging in or content being output. This knowledge is applied to creating plug-ins for the example project in order to support advanced searching of content, and for content authors to be able to have an example site automatically generate an information box when it detects specially tagged text in the content, before outputting it.

PHP programmers new to creating their own Joomla extensions, oftentimes struggle with figuring out how best to specify configuration settings so they are not buried in the code itself nor need to be added manually through MySQL queries — and, in turn, how to make it as easy as possible for those settings to be specified by any developer or site administrator who is using the custom extension. Chapter 10 shows how to do just that, with the information divided among the three types of Joomla extensions that most commonly need this flexibility: modules, plug-ins, and components.

Chapter 11 is somewhat like a catch-all repository for some miscellaneous topics: Leveraging Joomla's native article e-mailing functionality, Joomla extensions can be further enhanced by allowing the user to e-mail component content to other people. Joomla has built-in internationalization, allowing you to supplement any installable language packs with phrases for your custom extension's front-end and back-end user interface text — for any of the languages you choose to support. LeBlanc shows how to do that, for his example project. He also shows how to safely allow users to upload files to your Joomla server.

The final chapter of the book demonstrates how to package up all of the code and other files that you have created, so anyone else who wants to leverage that functionality can install your extension in their own Joomla-based Web site.

The book has a number of small blemishes, including several errata, e.g., "can [be] defined" (page 20), "set these variables to whatever value[s]" (page 31), "it the function proceeds" (page 74), "!." (page 76), "existing/modules" (page 112), and "contain[s] newlines" (page 238). There is the occasional erroneous capitalization of words (witness the first sentence in the "About the Reviewer" section), incorrect use of hyphens for creating adjectives, and inconsistent spelling of words (such as "back-end" and "backend"). All of these should have been caught by the publisher's line editors.

In some passages there is a dearth of commas that would help the reader know when to pause. The code formatting, such as indentation and brace placement, is not always consistent (e.g., pages 81 and 116). The chapter subheads should be in title case, but are instead in sentence case. Some of the HTML example code suffers from "div-itis," such as the use of div tags instead of label tags where appropriate (e.g., page 66). The Joomla root URL on the reader's local Web server — assumed by the author in all of the subsequent project URLs throughout the book — should have been mentioned in the first chapter, when discussing the prerequisite technologies for creating the example project, because that is the point in the book at which the reader would most likely have installed Joomla on their server.

All of the chapter summaries simply add bulk but no value to the book, and should be chopped, because the chapters are short enough to not justify any summarization. Moreover, in at least one instance (Chapter 10), the summary contains higher-level perspective not presented in the chapter itself, where it would be far more timely to the reader. In addition, the book provides apparently no figure numbers or captions, which arguably saves space, since readers rarely refer to them if they are reading the text closely, though less so when skimming through a technical book. Compared to its predecessor, this edition would still benefit from a lay-flat binding, and it still has the pointless header and footer lines, as well as page number bracketing (which admittedly seems to be part of the publisher's branding).

None of the aforesaid problems are of any gravity. The main problem with the book is that far too many of the discussions are rather cursory and fast-paced, lacking in both clear explanations of critical concepts and also an empathy for readers struggling to understand those concepts. For instance, the marketing copy for the book claims that the reader will learn the Model-View-Controller design pattern, when in fact the book fails to teach it well — instead only offering two foodservice examples, which are inadequate, particularly for any reader unfamiliar with design patterns in general. In other words, there is adequate explanation as to the specific steps for creating the example project code and other needed elements, but there is not enough explanation as to how those steps fit into the bigger picture, and how they could be enlarged so that the budding Joomla developer could create his or her own extensions, quite different from the book's example project.

On the other hand, this new version has several notable improvements over the previous edition, such as greater emphasis on Joomla 1.5-style coding, as well as more attractive screenshots, with far less pixelation. More importantly, there are three new chapters, addressing JTable, JHTML, JUser, JavaScript, e-mail, languages, and file uploading. As in the first edition of the book, LeBlanc opts for a nice balance of exposition, example code, and illustrative figures — along with the bolding of any changes in code shown in multiple places. Scattered throughout the book are handy tips and warnings to Joomla developers. Joomla's online documentation for extension development is not much better than it was a year ago, and thus there is still a need for helpful books such as this one.

On balance, Learning Joomla! 1.5 Extension Development is an approachable and useful resource for any developer who wants to maximize the functionality of their own Joomla-based Web sites — and perhaps share that new functionality with other developers by contributing the resultant extensions to the Joomla community.

Michael J. Ross is a freelance Web developer and writer.

You can purchase Learning Joomla! 1.5 Extension Development from Slashdot welcomes readers' book reviews — to see your own review here, read the book review guidelines, then visit the submission page.


This discussion has been archived. No new comments can be posted.

Learning Joomla! 1.5 Extension Development

Comments Filter:
  • Can the bang (Score:1, Insightful)

    by Nimey (114278)

    When you write Joomla with the exclamation point, you look like such a wanker. We don't do it for Yahoo, don't do it for this either.

  • I have gone cross eyed.

    Joomla amazing but I can guarantee I am not running out to get this book!

    Impostor Magazine

  • by Anonymous Coward on Wednesday February 04, 2009 @03:25PM (#26729209)

    1) Avoid Joomla
    2) Profit!

    • by ceejayoz (567949) <> on Wednesday February 04, 2009 @03:41PM (#26729401) Homepage Journal

      Amen to that. Mod parent up, please.

      • Re: (Score:3, Funny)

        by Anonymous Coward

        I'm still trying to learn BASIC. You mean there's a new programming language out?

      • More details please (Score:3, Interesting)

        by snowwrestler (896305)

        Can either of you provide more details on this? I'm considering Joomla for a pretty substantial site. Preferred alternatives? (Drupal?)

        • The site will be almost entirely content. It will need to be updated by non-technical staff, specifically uploading PDFs, creating new pages, and applying tags from a set taxonomy. It will need to handle user accounts and control access permissions down to the page level. This doesn't seem to call for much more than a standard CMS.

          We do not want to spend a lot of money on a license. We want a system that we can host and for which we can easily outsource work (no vendor lock-in). We want a system that we can

          • Re: (Score:3, Informative)

            by Swampash (1131503)

            Joomla is evil. That's all there is to it. The only way to get the functionality you would ever really need beyond basic content management is to pay large sums of money for commercial modules. The community is huge in the worst possible way. There are a million modules for one problem and it is near impossible to find the right one.

            The interface is deplorable. None of the methods of content management make any sense, and it is obviously not meant to be user friendly considering the top dollar training offe

            • by Narcocide (102829)

              I'll second that. Joomla is evil. Its designed to be bad so that you get stuck in it like quicksand then have to pay to get yourself out. Comments on their website claiming excitement about how its "good" should carefully be examined for age of post and reply count.

          • Re: (Score:3, Informative)

            The site will be almost entirely content. It will need to be updated by non-technical staff, specifically uploading PDFs, creating new pages, and applying tags from a set taxonomy. It will need to handle user accounts and control access permissions down to the page level. This doesn't seem to call for much more than a standard CMS.

            We do not want to spend a lot of money on a license. We want a system that we can host and for which we can easily outsource work (no vendor lock-in).

            So far so good. Joomla might fit the bill (the permissions bit might be problematic depending on your exact needs).

            We want a system that we can customize pretty easily; bonus if there is a large community creating extensions.

            That's where it starts to get interesting. Customizing Joomla is a pain. The "core" is not designed in a very modular/extensible way, and the quality of the code itself is generally low. Joomla provides nothing which would resemble a framework (think Cake, Symphony, etc) making you re-invent the wheel for every component (or create a framework of your own).

            The quality of third-party extensions

        • by sabernet (751826)

          In the time it will take you to learn to use Joomla to it's maximum, you'll have learned Perl or PHP(or Python, if you must) yourself, gotten a decent understanding of a certain brand of SQL and made a site custom tailored to you needs, as well as pick up an invaluable skill or two while doing it.

          I find CMS', especially humongous ones like Joomla, to just be huge, kldugey, one-size-fits-all things without even the benefit of quick launch(unless you want the default content they include, at which point your

          • by Dekortage (697532)

            Like you say, it's free, try it out for yourself.

            However, from experience I can tell you that hiring a good expert in the CMS of your choice, can really save you lots of headaches. Whether it's Typo3, or Drupal, or Plone, or Joomla, a good expert can set up the templates, organize the pages, and give you advice/support on managing the site. I am not an expert in any of these CMSs, but have worked on projects involving them enough times that I recognize the value of a good expert. It can be like hiring a

            • by Darkk (1296127)

              I've got like two production sites running Joomla! and I can tell you it's not for the novice. Luckily Turnkey Linux created a self contained ISOs for something like this making it a breeze to manage and install. Thank goodness for webmin!


          • In the time it will take you to learn to use Joomla to it's maximum, you'll have learned Perl or PHP(or Python, if you must) yourself, gotten a decent understanding of a certain brand of SQL and made a site custom tailored to you needs, as well as pick up an invaluable skill or two while doing it.

            This sounds fun but it's not a good idea for me professionally. I lead an internal corporate Web team and while there's no doubt in my mind that we could create a CMS from scratch, every hour we spend coding that up would be an hour we are not executing a communication strategy. We try to avoid reinventing wheels. So we use existing CMS systems and spend our time doing original design, original content, and occasional technical tweaks or extensions when we can't find a product to do what we want. Sometimes

        • by ceejayoz (567949) <> on Wednesday February 04, 2009 @10:14PM (#26733075) Homepage Journal

          Joomla comes out-of-the-box as a quite powerful but extremely restrictive system. If your site needs to work exactly as Joomla's developers intended, great.

          If your site doesn't exactly fit their cookie-cutter mold, though, you are screwed. Most tweaks to the way the site works will have to be done by either a) hacking core code (and thus meaning upgrades are a nightmare) or b) replacing core modules wholesale.

          An example: I was an intern and the project specs called for Joomla. The project also required articles to be categorised in more than one category - i.e. it might be in the 'nightlife' category and the 'downtown' category. Joomla's categorisation system, however, allows only one category for a content item.

          To have multiple categorisation, I had two options - hack apart much of Joomla's core code to wedge that functionality in, or buy commercial replacements to the main com_content module. Plus, if we'd decided we wanted a second feature that commercial replacement didn't have, we'd then have to hack apart that component too.

          Add in the heavily pay-to-play nature of Joomla extensions - an oddity for a GPL project - and getting a site set up can be a nasty, nasty proposition.

          If a PHP CMS is what you're looking for, my favourite is indeed Drupal. The key in Drupal is its API - you can alter essentially every bit of Drupal, even core components, without having to hack core code. As an example, API hooks like hook_nodeapi [] and hook_form_alter [] allow developers to modify any form in the Drupal installation. Want to change the username field in the signup form to a checkbox? You can do that.

          Modules like CCK (allows web-based configuration of content types) and Views (lets you easily set up, via a web interface, filters and criteria for displaying content) are wonderful helps, and include their own APIs so you can extend them, again without hacking their code. There's a vibrant developer community with well over a thousand contributed modules - and all free, and (in my opinion) of higher quality than most of the ones I came across in Joomla.

          It's a bit longer of a learning curve than Joomla, but the result is a far less frustrating development experience.

          • That is exactly the sort of detailed feedback I was looking for, and it gives me some things to check out and test on the Joomla sites we've stood up for testing. Thanks.

            I'm not married to a PHP CMS, but we often have more work to do than time or staff to do it, so it's important for us to get a CMS for which it's easy to find capable, professional consultant support. So far the best options along those lines seem to be Wordpress, Drupal, and Joomla.

          • by squoozer (730327)

            Many thanks for providing exactly the review of Drupal and Joomla that I have been looking for. I run a site with a few hundred pages in a CMS that I wrote myself. While it's pretty powerful and does what I want I can't be bothered to maintain the code any more and would rather switch to an open source CMS. I've played with Plone and really like the way it works but I can't help feeling it will always be playing catch-up to Drupal and Joomla (I've also played with Word Press but I want a CMS not a blog). Do

          • Excellent post. Drupal is the bee's knees, the ant's elbow, and the major arthroscopic joint of every other insect species in existence when it comes to open source content management systems.

          • Whilst there are restictions in place, if you're using it for the right job then this should never have happened in the first place.

            There are bonuses to using Joomla which outweight Drupal in a very strong way. The most important one is how the client will actually be editing content. Drupal doesn't come with a WYSIWYG editor, and it is not integrated in anyway with the CMS itself. Joomla does come with TinyMCE standard and image inserting tools (mambots). Joomla is more for actually putting the content

            • by ceejayoz (567949)

              Drupal doesn't come with a WYSIWYG editor, and it is not integrated in anyway with the CMS itself. Joomla does come with TinyMCE standard and image inserting tools (mambots).

              Yes, these come as separate modules in Drupal. This is a Good Thing(TM). I can choose any WYSIWYG editor to hook into Drupal - there are modules for all of the big ones, and you can write your own if you like. Same thing for image inserting - there are a number of ways. I'm not locked into one way of setting a site up for a client, which allows me to meet their actual needs instead of telling them how they're going to have to run their site.

              You need a handful of modules added on just give the basic functionality of editing content. Drupal houses have this as part of their workflow, but why should it be?

              First off, you can edit content in plain text or HTML out-of-the-bo

          • by The Benj (1478973)
            I use joomla for my a web site in the past. I used to write web sites manually but spent more time developing the sites infrastructure than the actual content. Once you get around Joomla's functionality, its easy to use.
    • Re: (Score:1, Informative)

      by Anonymous Coward

      Damn right. Joomla is not a CMS. It's an idiot portal for updating column based POS sites.

      • by CompMD (522020)

        AC is right, its fact. Just because you don't like it doesn't make it a troll.

      • Do some research before you flamebait. Saying Skoda still sucks as a car would make you Troll. And don't you dare ask why. Do some research.
    • I find these kind of comments amusing. How lowly PHP is, how crappy Typo3, Joomla, Drupal, whatever is. Meanwhile PHP applications are slowly but surely taking over the web. And Joomla scores somewhere around 130 Million hits on Google. About 100 Million more that any other CMS/Web Framework. []

      Oh, and btw., I'm currently profiting by actually *using* Joomla. And selling it to very happy customers. And helping out in the Joomla Bugsquad.

      • Re: (Score:3, Insightful)

        by sabernet (751826)

        5 million people used Frontpage in 2001 []

        IE 6 still has 20% marketshare []

        Numbers mean nothing.

      • by Swampash (1131503)

        Joomla scores somewhere around 130 Million hits on Google. About 100 Million more that any other CMS/Web Framework. []

        That's because there's 100 million sites out there proclaiming "Joomla is evil", "Joomla: worst CMS ever", and "Joomla: friends don't let friends use it".

        Worst CMS I've ever used. I start grinding my teeth just remembering it.

      • Re: (Score:3, Funny)

        by Darkk (1296127)

        Joomla! isn't bad. Just awkward on how to set the site up to my liking. My boss and I actually set one up for internal employee website to share company information and tips. Very helpful in our environment.

        We hope to keep improving it by adding new modules and features.

        I have another site I run for personal use to share my gallery pictures. It's working great for me after about two months of working with Joomla at work.

        Took me an hour or so to setup Joomla on my personal website and added the modules I

  • Whats good CMS to migrate from Joomla?
    Our corporate website is about to get full overhaul and I'd perfer to switch away from the ancient Joomla we're running now.

    I won't touch the design of the site, I'll leave that to the advertising company, but what I'm looking for is easy way to create and manage content on multilingual web page.
    Can someone suggest good alternative?

    • Re: (Score:2, Insightful)

      by brandaman (1136955)
      Drupal []
    • Re: (Score:3, Informative)

      by theskipper (461997)

      Probably start with Drupal on top of the evaluation list. Yeah the usual PHP gripes apply. But coming from a programmer's mindset, the framework always seems to make sense to me. The others felt kludgy in one way or another. YMMV.

    • Movable Type Enterprise Edition is probably your best bet. Even Movable Type Open Source is "good enough" for most users, but if you want a CMS that can be integrated into a mostly LAMP stack with the possibility of integrating into a corporate LDAP and Oracle or MS SQL Server, it's the way to go. If you take the time to read over all of the new capabilities for optimizing performance, it can produce some very fast websites and the plugin API is very robust and object-oriented.

      In all fairness, I've heard mo

      • by Darkk (1296127)

        Latest version of Joomla do support LDAP logins is what we use at work. We even found a template that we like and works well with the overall design.

        It's not as robust as the big name websites but for internal employee website use it's good enough for us. I even replaced the crappy default editor with JCK editor which works very well, even sports direct file uploads within the editor! Very nice.

        I think with Joomla most people figured it's plug and play. Not entirely true. You have to learn how it reall

    • by pembo13 (770295)

      CMS Made Simple really lives up to its name. Much easier to get stuff done than in Joomla.

    • - complete with multilingual support as requested.

    • by AlXtreme (223728)

      Personally, I really like MODx (did a big deployment some time ago, very flexible and efficient framework) and for very small sites Wordpress still is a good choice. Drupal is nice. If you can't find a CMS that fits the problem, don't be afraid to turn to a framework like Django or CakePHP and roll your own.

      A CMS or web framework is useful as long as it doesn't get in the way of the users and developers. IMHO, Joomla gets in your way very easily. Kudos on wanting to do the job properly.

      • Modx is great, I love it too and have used it for a fairly large site. However it has two big problems that made me move to silverstripe instead.

        1) It stores the php code for the plugins in the database, and forces you to edit them in the browser. This is *horrible* and means you can't use source control with them unless you hack your way out of this insanity with a require statement.

        2) The documentation is hopeless.

        Oh and (3) the permissions model is weird (but you do get used to it).

    • Re: (Score:3, Informative)

      by Gizzmonic (412910)

      I like Drupal and I'm running it at my job. I am not much of a programmer, more of an admin, but I can make it look the way I want by hacking around with the CSS and such. So far, no one has needed to do anything that can't be handled by modules. Those are easy to install, and they usually play nicely with other modules as well. It's a fine CMS.

    • by siDDis (961791) on Wednesday February 04, 2009 @04:47PM (#26730161)

      A good CMS to migrate to is Plone. I've been working the last few months with Plone and I love it! Plone is well structured and easy to develop for, the documentation on their site is a bit thin, and the documentation you can google is often outdated. However their IRC channel has plenty of nice peeps willing to help.

      Plone has a lot of freely available products which can improve your website and save hours of work.

      The application structure in Plone is easily structured. Everything is a module/plugin/product, like for example themes, archetypes, portlets/widgets. Setting up a Plone site is also very easy with the new buildout scripts, they're so advanced that you can build a *clone* a Plone site with all the add-on products without copying/moving any files(except the database). This also includes code you've written and commited to subversion.

      Developing html templates in Plone is a joyride. TAL is by far the nicest html template language I've ever developed in. Creating html templates that can be 100% perfectly validated is not very common in other template languages. You write html as you're used to and use html attributes to define where you want to repeat/loop code. Your html code will look like pure html, and not like a mixbag with regular programming code every second line(Django developers are you listening?).

      Not to mention that you get to program in a solid well designed programming language and not in a C/Perl inspired template language hack.

      But Plone isn't a solution for everything, especially if you need to modify it upside down or you're dealing with enormous amounts of data in the database.

      I highly recommend looking into Plone, if you're really stuck in the PHP world then the Midgard Project is also a good world to develop in, except that it's so tied to only MySQL.

      • by kidphoton (575170)

        A good CMS to migrate to is Plone. I've been working the last few months with Plone and I love it! Plone is well structured and easy to develop for, the documentation on their site is a bit thin, and the documentation you can google is often outdated. However their IRC channel has plenty of nice peeps willing to help.

        Plone is somewhat of a hairball, multiplied by the bits of Zope3 that have been included. If you look up "overengineering" or "java envy" in the dictionary, you will see the Zope3 logo. This is unfortunate because Plone has by far the best UI of any CMS that I've seen. And Zope2, while somewhat wooly, had some very interesting ideas in it. I would really like to like Plone, but even creating a new skin is a major undertaking, requiring the special buildout tools, and learning their special dictionary of CSS

    • You say its ancient, so I presume it's a 1.0.x variant. How about just migrating to the 1.5 branch. It is a complete redo from the ground up.

    • Re: (Score:3, Informative)

      by micheas (231635)

      You might look at Joomla 1.5. Unless the migration is going to take a while in which case look at Joomla 1.6.

      The amount of shared code between Joomla 1.0.x and 1.5.x is extremely small.

      Joomla 1.5 has a very nice MVC framework that was written because of the performance problems they were having with cake. (Cake does somethings really well, but the rewrite that would be needed for Joomla to work well on Cake inspired the Joomla developers to write their own framework.)

      The foundation of Joomla 1.5 is really n

    • by Swampash (1131503)
      Whats good CMS to migrate from Joomla? Our corporate website is about to get full overhaul and I'd perfer to switch away from the ancient Joomla we're running now. I won't touch the design of the site, I'll leave that to the advertising company, but what I'm looking for is easy way to create and manage content on multilingual web page. Can someone suggest good alternative? Of course, it depends what your requirements and what your capabilities are. Based on my own experiences I'd go with either Wordpr
  • Good Book (Score:3, Informative)

    by Frosty Piss (770223) on Wednesday February 04, 2009 @03:53PM (#26729531)
    This is a good book (which I have) that walks you though building a complex multi-part Joomla component. All the code works and is non-trivial. My only complaint is how LeBlanc deals with interacting with the core Joomla classes. Joomla recommends building components with classes that extend the core classes, while LeBlanc does not do it this way, he builds his own functions outside that structure. But if you're looking for a great learning tool that doesn't dumb down the subject and has copious code samples, this is it. A more general reference that is also comprehensive is Mastering Joomla! 1.5 Extension and Framework Development [], by James Kennard, same publisher.

    WARNING: LeBlanc has a previous edition of this book, same title, which is WAY WAY WAY out of date, but still on sale at Amazon and the publisher Web site. You have been warned...
    • > . In fact, one of the most common complaints about the first edition was its small size (176 pages).

      I'm not telling the reviewer is lying, but it seems pretty strange to me why people would want to read an 800-page-brick for something like Joomla. One of the things I found more value in a well written book is when it can provide a lot in less pages (for the rest, there is the Internet.)

      100 pages (with references to the web for the details) are more than enough for most software topics. I think that's t

  • by Eil (82413) on Wednesday February 04, 2009 @04:52PM (#26730201) Homepage Journal

    I'm dismayed to hear that there's not a chapter on how to write your extensions securely.

    I work for a web hosting company with tens of thousands of customers and whenever I investigate a server that's been successfully attacked (and thereafter vandalized or used for spamming), about 50% of the time I can trace back the intrusion to an exploit in an insecure Joomla or Mambo extension.

    Seriously, if you're going to use Joomla, do your web host a favor and NEVER use any third-party extension with it unless you can personally vouch for the competency of the programmer who wrote it. Of course, this advice is applicable to about any code you would run that has privileged access to your site or data, but so many people just throw caution to the wind when it comes web applications add-ons.

    • by Darkk (1296127)

      My site is being hosted by and I've used their installer to install Joomla for me. Problem is the installer contains an outdated version of Joomla so what I did was I simply FTP the updated files over to my home directory and made sure the file permissions are correct. This allowed me to update from 1.5.6 to 1.5.9

      I only have one module running to run my gallery and locked down the module access to only myself can admin it. Nobody can upload anything unless they e-mail me the pics to me so I ca

      • by Eil (82413)

        I only have one module running to run my gallery and locked down the module access to only myself can admin it. Nobody can upload anything unless they e-mail me the pics to me so I can post it.

        Pretty secure to me.

        Not necessarily. What you did was secure it through configuration. When I talk about exploits, I mean bugs or bad coding in the extensions that attackers use to gain access to the whole account. Mambo and Joomla themselves are moderately secure themselves (as long as you keep them up to date) due t

  • by exhilaration (587191) on Wednesday February 04, 2009 @05:32PM (#26730589)
    So I was building a website for a local organization and I decided to use Wordpress [], which is generally known as a blogging tool. Installation took a few minutes, browsing through the themes to find something really cool took about an hour. Then I found that when I created a page, it would automatically get added to the top menu. When I added subpage, it would automatically create a dropdown menu, with the subpage. So not only do you get the best blogging platform out there with Wordpress, you're also getting an easy to use CMS.
  • by Anonymous Coward

    Joomla! is terrible, and you're recommending Drupal as an alternative? Drupal is just as bad, if not worse. A CMS should never generate or prescribe it's own markup. EVER. If you're working with designers, they give their own semantic labels to ids and classes in their HTML/CSS deliverables and when you have a content management system that wants to call everything node-2 or node-3 you're screwed. Unless you're an auteur (developer/designer) who has good visual skills and can work with horrid PHP at the sam

    • by Monoman (8745)

      Django looks very cool but it is not a CMS and should not really be compared to them. From the Django FAQ:

      Is Django a content-management-system (CMS)?

      No, Django is not a CMS, or any sort of "turnkey product" in and of itself. It's a Web framework; it's a programming tool that lets you build Web sites.

      For example, it doesn't make much sense to compare Django to something like Drupal, because Django is something you use to create things like Drupal.

      Of course, Django's automatic admin site is fantastic and t

  • I think that Joomla has incredible capabilities with component and 3rd party integrations. I disagree with wordpress, plone, or drupal being better platforms in most cases. Joomla is extremely extensible, and security is manageable. Joomla 1.6 is soon to be a reality and many users will have incredible tools available with just the need to implement anything to acoomplish nearly any information based goal. Extension development is definitely in it's infancy having the last 25% of the extensions develope

"For the man who has everything... Penicillin." -- F. Borquin