3 Extension Development Third Edition Create your own plugins, modules, and components examples Tim Plummer BIRMINGHAM - MUMBAI Learning Joomla! eBook versions of every book published, with PDF and ePub files available?. Learning Joomla! 3 Extension Development, 3rd Edition by Tim Plummer Packt Publishing; 3rd Edition (July ) | ISBN: | PDF +. Learning Joomla! 3 Extension Development, 3rd Edition by Tim Plummer Packt Publishing; 3rd Edition (July ) | ISBN: | PDF + EPUB |
|Language:||English, Spanish, Portuguese|
|Country:||Papua New Guinea|
|Genre:||Politics & Laws|
|Distribution:||Free* [*Register to download]|
Joomla 3 is the first of the major open source content management systems that was meant to be mobile friendly by default. PDF下载地址( MB) 3 Extension Development, Third Edition” is an integrated series of practical, hands- on. Learning Joomla! 3 Extension Development-Third Edition. Clear steps to create your own plugins, modules, and components for Joomla 3. If you have ideas for additional Joomla 3! features, this book will allow you to realize them. It's a complete practical guide to building and.
Specifically you will learn how to add columns to your view, implement drag and drop ordering, add toolbar buttons and view filters.
Chapter 6, Backend Component Development — Part 2, is where you will finish the backend of your component. You will learn about pagination, submenus, ACL, and how to make your component support multiple database types. Chapter 7, Frontend Component Development, covers the development of the frontend of your component. You will learn how to add CSS files, menu item parameters, and how to translate your component. Chapter 8, Security — Avoiding Common Vulnerabilities, contains some hands-on ethical hacking to teach you about common vulnerabilities and how to avoid them in your extensions.
Chapter 9, Packing Everything Together, covers how you can prepare your extensions for distribution, as well as managing changes. It also shows how you could set up an update server, and some tips for getting listed on the Joomla! Extension Directory.
Chapter 10, Extending your Component with Plugins and Modules, contains a few plugins and modules that extend the functionality of your component, including a smart search plugin. We will also take a look at the new tags feature in Joomla! What you need for this book You will need Joomla! For Joomla! For more information on Joomla! You can use the free Express edition; there is no need to have the downloadd version.
Although this book starts out from scratch, it builds up to some more advanced topics that will interest experienced developers, such as integrating a third-party comments extension, so it is not just for beginners.
This book may also be useful to people that just want to make minor customizations to existing Joomla! Conventions In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning. Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: Tips and tricks appear like this.
Reader feedback Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of. To send us general feedback, simply send an e-mail to feedback packtpub. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.
Customer support Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your download.
Downloading the example code You can download the example code files for all Packt books you have downloadd from your account at http: If you downloadd this book elsewhere, you can visit http: If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us.
By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http: Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title.
Any existing errata can be viewed by selecting your title from http: Piracy Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at copyright packtpub. We appreciate your help in protecting our authors, and our ability to bring you valuable content Questions You can contact us at questions packtpub.
You will end up with a fully functioning package of extensions that you either can use on your own site or share with others. We will start out developing simple plugins and modules, and then progress to more complex backend and frontend component development. Then we will do a bit of white hat hacking, so you will learn about common security vulnerabilities and what you can do to avoid them.
After that, we will look at how you can prepare your extensions for distribution and updates, as well as how you can extend your components with various plugins and modules.
In this chapter, you will learn the difference between a plugin, a module, and a component, as well as seeing the other extension types available. You will get some advice as to the tools you will need to develop extensions, and other things you should consider such as licensing and business models. We are also going to take a look at how you could upgrade a Joomla! You will learn the following things in this chapter: Extensions can be installed on your Joomla!
The three main extension types we are going to cover in this book are plugins, modules, and components, and we will also create a package extension. Plugins Plugins are code that run in the background and are triggered by events.
When you log onto your Joomla! Plugins can be used to transform content, such as replacing a tag in an article with a Google map, or cloaking an email address and protecting it from spammers. Plugins can be very powerful, you can also use plugins to override core code and change how Joomla! The following screenshots demonstrate how a plugin replaces an address in an article with an actual Google map.
Your site template defines various module positions that determine where these modules are displayed. The menu of your website is a module, and if you have a small login form, that would also be a module. You might even have a social media module to display your Facebook or Twitter news feed. There are both frontend and backend modules, and often modules work in conjunction with components to display information on your website. Some developers use modules as a workaround to bring library code in, for example, RocketTheme's RokNavMenu, but that is not really what they should be used for.
The following screenshot is of a login module: Components are displayed in the main content area of the site, which is often the largest area in the template. Most menu items load a page with a component and there is only one component displayed on the page at a time.
Most components have database tables to store or retrieve information. Components generally have a frontend and a backend just like Joomla! You can enhance components using modules and plugins; for instance, you may have a search plugin that allows you to search for the content stored in your component, or a module that displays the latest items for the component.
Many websites need to be displayed in the local language of the audience and some even need to support multiple languages. A language pack includes the files necessary to translate the text used on the site. This translates predefined language strings used by core Joomla! We are not going to cover language packs in this book, but we will see how we can translate your extension into multiple languages. The following screenshot shows the control panel menu when the Dutch NL language is installed: Templates We don't want all our websites to look the same, so Joomla!
Since the content is separated from the presentation, it is easy to give your site a facelift by simply changing the template, assuming the new template has the same module position names.
Every Joomla! It is also possible to have different pages on the same website using different templates. We are not going to cover templates in this book, as there are plenty of books already dedicated to this subject. This is a better way of creating reusable code than putting it in a plugin, as this way the code is only used when needed rather than running in the background waiting for an event trigger. Libraries extension type was introduced in Joomla!
We are not going to cover the library extension in this book. Packages Joomla! It allows you to install your component and any associated plugins and modules all in one go, rather than the user having to install each one individually.
The short answer is definitely Joomla! If you want your extension to have the longest possible shelf life, then supporting Joomla! At the time of writing this book, the Joomla! Extension Directory unpublished all extensions which only support Joomla! Most developers choose to support both Joomla! There are advantages and disadvantages of both approaches. If you keep separate code bases for different Joomla!
If you choose to support both the versions in the same code base, then you need to do more testing to make sure that a feature added for one version doesn't break something in the other version, or that you have a bit of repeated code that does one thing for Joomla!
The differences between Joomla! They either had to dumb down their Joomla! In comparison, the changes between Joomla! Platform version has been updated which added forward compatibility for some of the new stuff in Joomla! My advice to you is to start out developing for Joomla! Then if you choose to also support Joomla!
What's new in Joomla! This is due to the introduction of Twitter Bootstrap which takes a lot of the hard work out of making a website look good and making it responsive.
Although jQuery has been added, MooTools is still available for those that want to use it, and some of the core Joomla! Some template developers even went as far as disabling MooTools which caused problems for extension developers who chose to use MooTools. Now that jQuery is in the core Joomla!
For a long time people have debated which is better, MooTools or jQuery, and there have been passionate arguments from both sides. It's great now in Joomla! It's becoming popular with template developers, and some extension developers are also using it. At the time of writing this book, Joomla! There will be a few more features that will slip into Joomla!
Any code that was marked for deprecation was removed in Joomla! CMS has committed to backwards compatibility between the long term release and the previous short term releases, so any code written for Joomla!
You may be thinking that MySQL is great, and wondering why you would want to support these other databases. Well, many people are tied to using other database types due to applications they use, or they may just prefer those databases. This is particularly important for enterprise Joomla!
Supporting multiple database types in your Joomla! We will discuss it in detail in Chapter 6, Backend Component Development Part — 2, and I encourage you to make the extra effort. The GPL license delivers the "four freedoms", that is, to use, study, modify, and distribute software for any purpose.
The GNU GPL is often misunderstood, many people don't understand how something that is free and open source can actually cost money since Joomla! You may have heard the explanation for "free" as in freedom as opposed to "free" as in free beer. The GPL allows you to charge for your software if you wish, providing that you make available full unencrypted source code.
Of course you can choose to give away your extensions for free if you want to, it is entirely up to you. GPL gives the user the freedom to make whatever changes they like to the software and it even allows them to distribute the software to other people. The GPL also allows people to fork your extension and potentially even charge other people for this modified version. Hang on a second, why would I want to make my commercial extension GPL if people are just going to give it away or fork it?
Well, the simple answer is that if you want your extension to be listed on the Joomla! Many extension developers receive over 60 percent of their traffic from the JED, so it is quite an incentive. Another major benefit of using the GPL license is that it clearly states that the software has no warranty which can protect the developer.
The GPL does not allow you to sell per domain copies of the software once someone has downloadd or is given a copy; they can use it on as many websites as they like. Many developers get round this by charging a per site support fee, and some only provide updates for the downloadd number of domains.
There is nothing stopping someone downloading a single site support and then using this same software on multiple domains. In the early days of Joomla! From July 1, , the JED only listed extensions licensed under the GNU GPL, and at the time of the change, there were a lot of extension developers resistant to it, but more recently developers are seeing the advantages of GPL and are embracing it.
What business model should I adopt?
You can use whatever business model you can think of. One of the great things about Joomla! Here are a few popular business models used in the Joomla! This model is popular in the Joomla!
Why would they do this? Sometimes the development cost is funded by the developer's employer or client, and they feel this software would be useful to others, so they share it with the community. The benefit to the developer is that other people in the community can contribute back additional features or improvements, so the person funding the development gets an added bonus. It can also give recognition to the developer, which may be helpful if they are looking for work or trying to promote other extensions.
Extension developers often get approached to make customizations to their product for a fee, which can often far exceed the money they would make if they were to sell the extensions, and without giving it away for free, they would have missed out on these opportunities.
Some developers just like to contribute to the Joomla! There are also those that develop extensions for Joomla! This is a popular model where you can get the basic functionality for free, but need to pay for advanced features.
The most popular example of this is the Akeeba Backup software, where the free version gives you a great piece of software that many people use to back up their site. There is a pro version that gives you extra functionality such as the ability to remotely store backups on site S3 or Dropbox, which is not needed by everyone, but those that do are more than willing to pay for these features.
A variation on the freemium model is where a component is given away for free, but you need to pay for the add-on plugins and modules. One good example is the Joomla! Content Editor JCE. This model is sometimes used where a user downloads an extension, then receives updates for free for the lifetime of that product.
This can be attractive to the end user that doesn't want ongoing subscription costs, particularly those that just want the software for a single website or a small once-off project.
From a developer's perspective, using this model makes it easier to support as you only really need to support the current version. If someone is having an issue and they are still using an older version, you can just send them a copy of the latest version and in many cases, this resolves their issue. It also takes the pressure off the developer to release new versions regularly and add significant new features just to justify ongoing subscription costs of other models.
By far, the most popular business model in the Joomla! The subscription typically could be six months or twelve months. This is popular with developers as it gives them an ongoing revenue stream, however from an end user perspective, the total cost of ownership of the software can be more expensive than some of the other approaches, particularly if the extension is only used on a small number of sites.
However many subscriptions also include free support, which can decrease the total cost of ownership for end users should they run into issues, as some of the other business models charge a separate fee for support, which in some cases can exceed the initial download price. If a user is paying a subscription, they expect to get more frequent updates, and to get something for their ongoing fee, otherwise some users may choose to discontinue their subscription.
There are many more business models you can consider, however your individual circumstances and business goals will help you determine which approach is most suitable for you. Tools you need to develop the Joomla! There are free open source software for all the major operating systems, but the most popular operating system in the Joomla!
Day events seems to be Mac, although personally I use Windows, and there are those that use Linux too. When it comes to Joomla! Apache webserver is most commonly included in these tools, but there is nothing stopping you from using an alternative webserver such as IIS.
You could have no local development environment and just work off a live webserver, but I would not recommend this as it's going to be much faster and more convenient for you to have the local environment, and there is no risk of breaking anything on a live site.
To test your code, you will need a web browser, and once again you have many to choose from.
I really like the Firebug plugin for Firefox which allows you to inspect elements to see what CSS code is being applied, which is really handy for development purposes. All the major browsers now have some kind of similar development tools, so what you choose to use is entirely up to you.
They can also allow you to use a builder such as Phing or Ant to automatically create installable packages for your extensions and simultaneously copy the code to multiple development sites, and they can do file comparisons to see what has changed.
Another big advantage of an IDE is that you are able to use a debugging tool such as XDebug to set up breakpoints to step through, and inspect code while it is running. I personally use Eclipse, which can be slow when used on older computers, but if you have a fast processor such as an i7, it works great.
Coding standards The Joomla! You can see the full details on the developer site at http: The first thing to note is that Joomla! The encoding on files must be set to UTF-8, as some other languages need this encoding to display all the different characters, and it is important that Joomla!
The closing PHP tag? It's always best to make your code as similar in style to the core code as possible, as it will make it easier for other people to customize your code to suit their purposes. There is nothing worse than wanting to make a minor change to an extension and finding that the developer's code looks nothing like what you are familiar with, so you waste a lot of time just trying to reverse engineer it. It should be noted that any IDE worth its salt can reformat the code to suit the operator's preference, so minor formatting problems are only really an issue if you are using a basic text editor.
The view displays all the data, but doesn't care how the data is stored; that's the job of the model. The controller tells the model and the views what to do. New MVC classes were introduced in Joomla! Platform CMS for Joomla! Most people are still using the older MVC classes which have been renamed with the Legacy suffix.
The core extensions in Joomla! The UCM idea is to have a single content structure that would be used for all the extensions, and this will allow them to interact more easily. Essentially, if you develop a comments plugin for one extension, it will automatically work for every other extension due to the consistent data structure. There is still a lot of work that needs to be done to implement UCM, but we may start seeing it around Joomla!
There are still not many good examples of the new MVC and the documentation is limited, so my advice is to stick with the legacy classes for now. CMS roadmap released in March actually indicates that we will roll MVC legacy classes back to their original names and drop the Legacy suffix.
Providing Joomla! Any code we write now for Joomla! This MVC rollback may introduce a small backwards compatibility issue for those already using the new MVC that are using type hinting, for example if the new JModel was renamed to JModelInterface, so this is another reason why you wouldn't bother adopting the new MVC classes yet. You can read about the current roadmap at http: Using the legacy classes introduces a problem. What if you want to support Joomla! For example, Joomla!
There are workarounds for this, for instance you could create a legacy. If you wanted to use the new MVC classes, then your extension will only be able to support Joomla! What about Joomla! Well, the above code would possibly make your extension work on these versions too. However there are quite a few other functions that have changed, so you are going to run into other problems. For example, JDate:: As Joomla!
Upgrading a Joomla! This may be true for very simple extensions that are already following best practices, but in reality there is a lot more work involved. There were a number of functions that were deprecated or changed, and with the introduction of Bootstrap, the backend interface has undergone some significant changes.
So to make the extension work well on Joomla! One change I'd like to highlight is the removal of DS that was commonly used for the directory slashes in previous Joomla! Although you could define a DS constant to avoid having to change your code, I would recommend that you make the effort and update your code. For plugins and modules, this is probably all you need to do to them and they will work, but for components it is not quite that easy.
Even after you've made all these changes, although your extension may work in Joomla! You will see an example of this in the following screenshot, where there are unnecessary bullet points and a field that is only partially showing: All the detailed changes necessary to convert a Joomla! The following screenshot shows the same form as shown in the previous screenshot, however this one has been fully updated to support Joomla! To fork or not to fork? When you are creating a new extension for Joomla!
This book is going to cover creating an extension from scratch, so you can learn all the basics. Once you know these, you may wish to fork the extensions we make together or even fork one of your own extensions to save you a lot of time if you need to make something similar. There are several extension building components that will prompt you for a bit of information, then create a basic component, plugin, or module based on the information you provide.
EasyCreator is one such extension that I have used in the past, but you still need to know the basics to be able to modify this automatically generated code to suit your needs. If you want to know more about these types of extension building components, you can refer to the development category within the miscellaneous category on the JED. If the developer has lost interest in further developing the extension or if you have a completely different vision that will take the software down an entirely different path, then there may be an opportunity to fork the extension rather than starting over from scratch.
Summary Now you should have some idea about the differences between a plugin, a module and a component. We discussed what Joomla! We touched on some of the new features of Joomla! We discussed some of the common business models used by Joomla! We briefly looked at the coding standards, and then talked about MVC and why we should use the Legacy classes. We talked about upgrading existing Joomla!
Now get ready for the next chapter where we will start to get our hands dirty with some coding that you can follow along with to create your first Joomla!
If you skipped the first chapter, don't worry, you can come back to the theory later. Most development books will start out with a "hello world" example, but that's been done before and is really boring, so we are going to skip that and start out by creating a simple plugin that actually does something useful.
By the end of this chapter, you will have made your first Joomla! Plugin code is executed when certain events are triggered.
You can skip the next couple of pages if you just want to get stuck in with the hands-on example and just go straight to the Where do I start? The different types of plugins are explained as follows: When you log in to your website, an authentication plugin runs to check your credentials and decide if you should have access to the site. You can use more than one authentication plugin on the same site so that you can give your users a choice and not force them to have to remember another password by allowing them to reuse one of their existing accounts in another system.
The following screenshot shows the authentication plugins you can enable on your Joomla! It's that box where you need to type in characters to prove that you are a person and not an automated spambot.
This mostly refers to article contents but some extensions load content plugins too. Content plugins allow you to change the content before it is displayed on the website. The Click To Call plugin we are creating in this chapter is a content plugin. We can see the Click to Call plugin enabled in the following screenshot: You could potentially integrate a different editor in the core by creating an editor plugin. Editor plugins are probably the most complex, so it's not something a beginner would attempt to create.
This type of plugin is to extend the functionality of editor plugins by adding new buttons which trigger new functionality. For example, if you wanted to create a button in the editor that inserts a copyright symbol, you could write an editors-XTD plugin with this functionality. Extension events are triggered when extensions are installed, uninstalled, updated, or edited through Plug-in Manager, Module Manager, Template Manager, or Language Manager.
I haven't seen this plugin type used much in third-party extensions. In the admin control panel page in the backend of Joomla! Quick Icons plugins are used to display the Joomla! However at the time of writing this book, the alternate admin template in Joomla! This is the older type of search that has been in Joomla! The search plugin type is commonly used by extension developers to get data from their component showing up in the core Joomla!
Due to the introduction of smart search, eventually this older style search will be removed from the core, but for now, some people still choose to use it. Smart Search is the new search functionality that was added to the Joomla! It does some fancy stuff such as suggesting alternative keywords that might help the user find what they are looking for.
For example, if you search for "color" American spelling it will suggest "colour" UK spelling , or if you made a typo, it would suggest similar words. Because this new search was such a dramatic change, it was decided that it would be gradually introduced by having it as an optional feature that you can turn on if you want to.
Many extension developers have written smart search plugins for their components so they can take advantage of this new searching ability.
These plugins are used to index the content so it can be used by Smart Search. The following screenshot demonstrates how smart search can suggest similar words to the term you are searching: The following screenshot shows an example of a search using Smart Search where a relevant article is found. User plugins allow you to do some extra things during user-specific events. The user profile plugin is a good example that was added in Joomla!
If you wanted to keep a log of when people log in and log out of your website, you could write a user plugin to do this.
System plugins run in the background and are triggered during every execution cycle regardless of which task is being performed. Akeeba Backup uses system plugins to trigger the update e-mail notifications. System plugins are loaded very early in the Joomla! This is because when Joomla! So if our system plugin gets in first, its code will be used instead of the core class. Overriding core Joomla! Plugin event triggers Each plugin type has its own set of events that trigger these plugins to execute.
Each plugin can use one or more event triggers but there is no need to use all the event triggers available, just pick out the ones you need. You also have the freedom to create your own custom plugin event triggers in your components, however, that is also outside the scope of this book.
The following table summarizes the types of plugins available and their respective event triggers: To get started with plugin development, first we need to decide what problem we are trying to solve or what functionality we are trying to implement. Let's assume that you have a website with various phone numbers listed on the site, and that this site is popular with people who access the site through a smartphone.
Currently, to call one of the numbers, the user has to remember the number to dial it, or perhaps they jot it down on a piece of paper or attempt to select and copy the number through their browser.
This is not very user-friendly, a much better way to do this would be to change the phone number to a click-to-call link, so the user can just click the phone number and their phone will call it.
Now, you could go through the website and manually change all the phone numbers to these links, but that would be inconvenient. Assuming our phone number is in the format , we could change it to this HTML code to create a click-to-call link. Well that's exactly what we are going to do.
When a mobile user clicks on the phone number, it will allow them to easily call the number. So now that we know what we are trying to achieve, the first thing to do would be to check the Joomla! Extension Directory JED to make sure that a solution to this problem does not already exist. Why reinvent the wheel if you can find something that already does the job or does something similar you could adapt?
So let's assume that we've had a look at the JED http: The first part of the name plg indicates that this is a plugin extension. Then we identify what type of plugin this is; in this case, it's a content plugin.
Then we add our unique name, preferably something short that describes this plugin; in our case, this is clicktocall. Once you have a name, it's a good idea to search the JED and Google to make sure that it is truly unique as you will have problems listing the extension on the JED later if it is not unique.
Many developers add their initials or business name to the extension to avoid name conflicts. This XML file describes all the files and folders used by this plugin, and what parameters the plugin has. The naming standard of the installation XML file is extensionname. In this folder, create a file called clicktocall. All rights reserved. Requires Joomla! Don't forget to publish this plugin!
The first thing to notice is the extension tag, that tells Joomla! If you wanted to also support Joomla! In our case, we are creating a content plugin. If you do not include this, then every time you install an upgrade version of the extension, the uninstall script will run and it will delete your existing data. That's not really a problem for this plugin as it doesn't have an associated database table, but it's a good idea to include it anyway in all your extensions.
The standard for plugins is to say the plugin type dash plugin name. You should use a three digit version number separated by full stops. Most plugin developers add the words "Don't forget to publish this plugin! Then at the end of our XML file, we have a closing extension tag that tells Joomla! In the past, it was considered a security risk not to include these index. The JED previously rejected any extension that did not include these index.
As of April 1, , the JED has dropped the requirement to include index. Nicholas K. Dionysopoulos from Akeeba has written a detailed explanation as to why the index. This explanation can be found at http: Ideally your web host should have the directory traversal disabled, or you should utilize the. However, there are still a lot of Joomla!
The following screenshot shows a blank page displayed when the user tries to browse a folder directly: This is shown in the following screenshot: Creating the plugin PHP file So now we need to write the PHP file that does all the hard work for this plugin and implements the functionality that we are trying to achieve.
You'll notice that all of the core code has these DocBlock comments which makes it easy for automated tools to generate documentation of APIs, and it also helps some IDEs to provide code completion. In third-party extensions, they are optional but commonly used, and it is recommended that you include them.
Here is an example of a typical DocBlock. It is a security risk if you leave these out as they prevent the PHP file from being executed directly and force it to only run when called by Joomla!.
In the past it was common to write a message with the die statement, for example, die 'Restricted access' , but now it is recommended to add just die to a blank page and give the potential hacker as little information as possible. Joomla 3 is the first of the major open source content management systems that was meant to be mobile friendly by default. Joomla uses object-oriented principles, is database agnostic, and has the best mix of functionality, extensibility, and user friendliness.
Add to that the fact that Joomla is completely community driven, and you have a winning combination that is available to everyone, and is the perfect platform to build your own custom applications.
With Joomla having been downloaded well over 35 million times, there is a huge market for Joomla extensions, so you could potentially earn some extra cash in your spare time using your newly acquired Joomla extension development skills. We will start with developing simple plugins and modules, and then progress to more complex backend and frontend component development. Then we will try our hand at ethical hacking, so you will learn about common security vulnerabilities and what you can do to avoid them.
After that we will look at how you can prepare your extensions for distribution and updates, as well as how you can extend your components with various plugins and modules. Finally, you will end up with a fully functioning package of extensions that you can use on your own site or share with others.
If you want to build your own custom applications in Joomla, then "Learning Joomla! Tim Plummer is a Joomla! Tim has developed and maintained several popular components, modules, and plugins, which are listed on the Joomla! Extension Directory, in addition to his day job in IT for a multinational manufacturer. Tim lives in Sydney, Australia, with his wife, Tamlyn, who runs her own design agency and two kids, Zane and Ava-Lily, who keep Tim very busy. At university Tim studied Engineering, and he has a Bachelor of Engineering in Telecommunications Engineering degree, however his passion in IT has been his career focus.
Tim is very active in the Joomla! Day Sydney conference since , taking on the coordinator role in Tim has run Joomla! Sign up to our emails for regular updates, bespoke offers, exclusive discounts and great free content. Log in.
My Account. Log in to your account. Not yet a member? Register for an account and access leading-edge content on emerging technologies. Register now. Packt Logo. My Collection. Deal of the Day Understand the fundamentals of C programming and get started with coding from ground up in an engaging and practical manner. Sign up here to get these deals straight to your inbox.
Find Ebooks and Videos by Technology Android. Packt Hub Technology news, analysis, and tutorials from Packt. Insights Tutorials. News Become a contributor. Categories Web development Programming Data Security. Subscription Go to Subscription.
Subtotal 0. Title added to cart. Subscription About Subscription Pricing Login. Features Free Trial. Search for eBooks and Videos. Learning Joomla! It starts with a intro to Joomla and it's various types of extensions, what's new in Joomla 3 and tools you need to develop in Joomla. Then if focuses on API, plugins and modules and then it goes to backend and frontend component development.
Next part is about common security vulnerabilities and what you can do to avoid them. After that the author explains how to prepare your extensions for distribution and updates, as well as how you can extend your components with various plugins and modules. Each chapter introduces and describes more enhanced functionality with each chapter building and adding to your knowledge learned in the previous chapters.
I like the way it's explained how to do it That leads you to a fully working example that you can modify and learn from. Clear division has another easy advantage - when you have a problem with something, you just need to find the relevant chapter and read it.
So at the end you will stand with a package of functionable extensions ready to use! I am sure that this book is just perfect for anyone who want to explore the Joomla Development world. I do not have any other choice but to recommend it.