<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Purplebeanie</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Purplebeanie"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Purplebeanie"/>
	<updated>2026-06-27T06:43:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:How_to_debug_your_code&amp;diff=121807</id>
		<title>Talk:How to debug your code</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:How_to_debug_your_code&amp;diff=121807"/>
		<updated>2014-06-30T22:14:43Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Created page with &amp;quot;Hi, does anyone know if there are any guidelines as to what speed and memory performance &amp;quot;SHOULD&amp;quot; be like at each of the event points? ie: onAfterInitialize etc?   ~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, does anyone know if there are any guidelines as to what speed and memory performance &amp;quot;SHOULD&amp;quot; be like at each of the event points? ie: onAfterInitialize etc? &lt;br /&gt;
&lt;br /&gt;
[[User:Purplebeanie|Purplebeanie]] ([[User talk:Purplebeanie|talk]]) 17:14, 30 June 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=121806</id>
		<title>How to debug your code</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=How_to_debug_your_code&amp;diff=121806"/>
		<updated>2014-06-30T22:11:07Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Adds a little more information about JDebug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{page|needs improvement|Updated Joomla! System-debug plugin features not listed here.}}&lt;br /&gt;
&lt;br /&gt;
==The Easy Way 1 (echo)==&lt;br /&gt;
The simplest way to see what is going on inside your code is to temporarily add echo statements for variables to show their values on the screen. For example, say you want to know what the value of some variables are when $i is &amp;quot;5&amp;quot;. You could use code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;for ( $i = 0; $i &amp;lt; 10; $i++ ) {&lt;br /&gt;
	if ( $i == 5 ) {&lt;br /&gt;
		echo &#039;$i=&#039; . $i; &lt;br /&gt;
                // other echo statements &lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This works for simple situations. However, if you are planning on doing a lot of Joomla! development, it is worth the effort to install and learn an integrated development environment (IDE) that includes a real PHP debugger.&lt;br /&gt;
&lt;br /&gt;
==The Easy Way 2 (joomla message)==&lt;br /&gt;
Your code won&#039;t always display simple echo statements. In that case you can try this alternative, still easy way:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;JFactory::getApplication()-&amp;gt;enqueueMessage( &#039;Some debug string(s)&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
You can choose different [[Display_error_messages_and_notices|message types]] which corresponds to grouping with different styles (colors mainly).&lt;br /&gt;
&lt;br /&gt;
==Using an IDE==&lt;br /&gt;
Check this 3 minutes video that shows [http://www.youtube.com/watch?v=sP4dHAuq2kc&amp;amp;feature=youtu.be how you can debug your code with a Browser and an IDE]&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|sP4dHAuq2kc}}&lt;br /&gt;
&lt;br /&gt;
Many Joomla! developers use the Eclipse IDE. This is free and includes a debugger. Instructions for installing it are available at [[Setting up your workstation for Joomla! development]].&lt;br /&gt;
&lt;br /&gt;
==Using the PHP Expert editor==&lt;br /&gt;
Another option is the PHP Expert editor with an installed extension for debugging. Add the following lines to the php.ini file:&lt;br /&gt;
&lt;br /&gt;
 extension=php_dbg.dll&lt;br /&gt;
 [Debugger]&lt;br /&gt;
 debugger.enabled=on&lt;br /&gt;
 debugger.profiler_enabled=off&lt;br /&gt;
&lt;br /&gt;
It is best to set profiler_enable to &amp;quot;off&amp;quot;. Then you need to set options in the Run/Options menu to use HTTP-server and the directory in which your script is located.&lt;br /&gt;
&lt;br /&gt;
If all options are correct, you may run your script in debug mode by clicking on the Debug button (F8)&lt;br /&gt;
==J!Dump==&lt;br /&gt;
An often handy extension that can be found in the JED is the J!Dump extension that will allow you to dump variable, stack traces, and system information into a popup window at run time. This extension works like the PHP command `var_dump` but formats the output in a much more readable fashion.&lt;br /&gt;
==JDEBUG==&lt;br /&gt;
To check whether the Website is in the debug mode, test the JDEBUG variable: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if(JDEBUG){&lt;br /&gt;
//whatever debugging code you want to run&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JDEBUG can be enabled from the Joomla! Global Configuration under the System tab.  Once enabled the JDEBUG module will be published to the bottom of each page.&lt;br /&gt;
&lt;br /&gt;
[[File:Jdebug-module.jpg|framed|center|The JDebug Module]]&lt;br /&gt;
&lt;br /&gt;
This module provides important information that can assist in debugging and improving the performance of your component.&lt;br /&gt;
&lt;br /&gt;
===Profile Information===&lt;br /&gt;
&lt;br /&gt;
The Profile Information tab from the JDEBUG module provides information about the time and memory taken to render the page based on each of the application events.  This can help to identify areas outside of network speed that are contributing to long page load times high server memory usage.&lt;br /&gt;
&lt;br /&gt;
[[File:Jdebug-profile.jpg|framed|center|JDEBUG Profile]]&lt;br /&gt;
&lt;br /&gt;
===Database Queries===&lt;br /&gt;
&lt;br /&gt;
One of the most useful tabs is the Database Queries tab.  This will provide a log of all queries that have been executed while loading the page and identify both the time taken to execute the query and whether duplicate queries have occurred.  This is particularly useful when debugging performance problems on larger components as duplicate queries are often a contributing factor.&lt;br /&gt;
&lt;br /&gt;
[[File:Jdebug-query.jpg|framed|center]]&lt;br /&gt;
&lt;br /&gt;
==JFirePHP==&lt;br /&gt;
Use the Joomla [http://extensions.joomla.org/extensions/miscellaneous/development/11343 JFirePHP extension].&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Video]]&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-query-en.jpg&amp;diff=121805</id>
		<title>File:Jdebug-query-en.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-query-en.jpg&amp;diff=121805"/>
		<updated>2014-06-30T22:09:47Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Display detailed information about queries.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Display detailed information about queries.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{GPL}}&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-profile-en.jpg&amp;diff=121804</id>
		<title>File:Jdebug-profile-en.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-profile-en.jpg&amp;diff=121804"/>
		<updated>2014-06-30T22:04:46Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{GPL}}&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-module-en.jpg&amp;diff=121803</id>
		<title>File:Jdebug-module-en.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Jdebug-module-en.jpg&amp;diff=121803"/>
		<updated>2014-06-30T21:56:50Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Screenshot of JDEBUG module published.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Screenshot of JDEBUG module published.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{GPL}}&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Framework_talk:Home&amp;diff=107263</id>
		<title>Framework talk:Home</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Framework_talk:Home&amp;diff=107263"/>
		<updated>2014-01-29T23:38:09Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Created page with &amp;quot;~~~~ Just added links to the Framework:Getting_Started page under a section Getting Started&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Purplebeanie|Purplebeanie]] ([[User talk:Purplebeanie|talk]]) 17:38, 29 January 2014 (CST)&lt;br /&gt;
Just added links to the Framework:Getting_Started page under a section Getting Started&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Framework:Home&amp;diff=107262</id>
		<title>Framework:Home</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Framework:Home&amp;diff=107262"/>
		<updated>2014-01-29T23:37:27Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Added getting started section and link to Framemwork::Getting_Started&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{FULLPAGENAME}}/header}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding-left:15px;&amp;quot;&amp;gt;&amp;lt;markdown&amp;gt;&lt;br /&gt;
[![Build Status](https://travis-ci.org/joomla/joomla-framework.png?branch=master)](https://travis-ci.org/joomla/joomla-framework)&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== What is the Joomla! Framework ? ==&lt;br /&gt;
__TOC__&lt;br /&gt;
The &amp;lt;code&amp;gt;Joomla! Framework&amp;lt;/code&amp;gt; is a framework for writing web and command line applications in PHP. It is free and open source software, distributed under the GNU General Public License version 2 or later.&lt;br /&gt;
&lt;br /&gt;
It is composed of code originally developed for the Joomla Content Management System (CMS). For more information about the Joomla CMS visit http://www.joomla.org/about-joomla.html.&lt;br /&gt;
&lt;br /&gt;
For news and information about developing with Joomla, please visit http://developer.joomla.org.&lt;br /&gt;
&lt;br /&gt;
View the Joomla Framework API Documentation at http://api.joomla.org and is powered by [http://www.phpdoc.org phpDocumentor 2].&lt;br /&gt;
&lt;br /&gt;
You can discuss Joomla Framework development by joining the mailing list at http://groups.google.com/group/joomla-dev-framework.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* PHP 5.3.10&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Via Composer ===&lt;br /&gt;
&lt;br /&gt;
* Create a project and add a &amp;lt;code&amp;gt;composer.json&amp;lt;/code&amp;gt; file to it with the content :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;require&amp;quot;: {&lt;br /&gt;
        &amp;quot;joomla/joomla-framework&amp;quot;: &amp;quot;dev-master&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Download Composer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl -sS &amp;lt;nowiki&amp;gt;https://getcomposer.org/installer&amp;lt;/nowiki&amp;gt; | php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install the Joomla Framework&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php composer.phar install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via Git ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;git clone git://github.com/joomla/joomla-framework.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
This page has some questions and answers to some common problems that may occur getting started with your first app. [[Framework:Getting_Started]].  Another great resource is the sample framework app.  You can find this on github here.  https://github.com/dbhurley/framework-app&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
General documentation about the Joomla Framework can be found under the [https://github.com/joomla/joomla-framework/tree/master/docs /docs] folder of the Git repository. In addition, each package has documentation in a &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs and Issue ==&lt;br /&gt;
&lt;br /&gt;
Bugs and issues found in the Joomla Framework code can be reported on the [https://github.com/joomla/joomla-framework/issues Issues] list.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
All kind of contributions are welcome. Please read about how to contribute [https://github.com/joomla/joomla-framework/blob/master/CONTRIBUTING.markdown here].&lt;br /&gt;
&lt;br /&gt;
You may find tasks you can do on the [https://github.com/joomla/joomla-framework/issues Issues] list by filtering on labels and milestones&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! Framework]]&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Framework_talk:Getting_Started&amp;diff=107261</id>
		<title>Framework talk:Getting Started</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Framework_talk:Getting_Started&amp;diff=107261"/>
		<updated>2014-01-29T23:32:39Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Created page with &amp;quot;~~~~ I&amp;#039;ve created this page to try and answer some problems I was bumping into getting started and couldn&amp;#039;t find easy answers for on Google so referred back to source code.  H...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Purplebeanie|Purplebeanie]] ([[User talk:Purplebeanie|talk]]) 17:32, 29 January 2014 (CST)&lt;br /&gt;
I&#039;ve created this page to try and answer some problems I was bumping into getting started and couldn&#039;t find easy answers for on Google so referred back to source code.  Hopefully these might help reduce the learning curve.&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Framework:Getting_Started&amp;diff=107260</id>
		<title>Framework:Getting Started</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Framework:Getting_Started&amp;diff=107260"/>
		<updated>2014-01-29T23:31:17Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: This page has some Q&amp;amp;A&amp;#039;s for some of the issues I encountered when getting started with the Framework&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are some questions and answers that may help make getting started with the Framework easier.&lt;br /&gt;
&lt;br /&gt;
==Why does the router keep throwing &amp;quot;Unable to handle request for route&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
This error is generated when the \Joomla\Router\Router class is unable to find a valid route to match the URL the user has entered.&lt;br /&gt;
&lt;br /&gt;
This could be due to:&lt;br /&gt;
&lt;br /&gt;
* There is no route defined for the resource and the router does not have a defaultController (defined using $router-&amp;gt;setDefaultController(fully namespaces controller name)).  Check to see if a route exists, or the defaultController has been set.  &lt;br /&gt;
* You have not created a .htaccess file to rewrite the URL To remove the index.php component of the URL.  Use the example .htaccess in the framework-app. (https://github.com/dbhurley/framework-app/blob/master/www/.htaccess)&lt;br /&gt;
&lt;br /&gt;
==How do I create a default route when no existing route matches?==&lt;br /&gt;
&lt;br /&gt;
A default controller can be created for the Joomla\Router\Router class.  This is used when no existing route matches the request URI.  &lt;br /&gt;
&lt;br /&gt;
To define a default controller call the \Joomla\Router\Router class setDefaultController function and pass the fully namespaced controller name you wish to use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$router-&amp;gt;setDefultControllerPrefix(&#039;App&#039;);&lt;br /&gt;
	$router-&amp;gt;setDefaultController(&#039;\Controller\DefaultController&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will attempt to load the DefaultController.php file from the App/Controller directory.  The class name would be DefaultController.&lt;br /&gt;
&lt;br /&gt;
==How can I easily create a lot of routes?==&lt;br /&gt;
&lt;br /&gt;
The \Joomla\Router\Router class has a function addMaps that takes an array of routes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$router-&amp;gt;addMaps(my array of routes)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These can be loaded from an array defined elsewhere or from an external file.  The framework-app (https://github.com/dbhurley/framework-app/) shows how to load these from an external JSON file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$router = new Router();&lt;br /&gt;
	$maps = json_decode(file_get_contents(JPATH_CONFIGURATION.&#039;/routes.json&#039;));&lt;br /&gt;
	$router-&amp;gt;addMaps($maps);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I find creating routes in a routes.json file easier to manage.&lt;br /&gt;
&lt;br /&gt;
==How do I connect to the database from a Controller?==&lt;br /&gt;
&lt;br /&gt;
Connecting to the database is managed through the \Joomla\Database\DatabaseFactory class.  While you could create this each time in each controller this would be extra code to manage for any changes.  I found the easiest way was to create this when bootstrapping the application and maintaining a reference in the AbstractWebApplication class.&lt;br /&gt;
&lt;br /&gt;
Much of this code has been lifted from the Framework-app at (https://github.com/dbhurley/framework-app).&lt;br /&gt;
&lt;br /&gt;
First, create a json file called config.json in the App/Config directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
	{&lt;br /&gt;
	&amp;quot;database&amp;quot;:{&amp;quot;driver&amp;quot;:&amp;quot;mysql&amp;quot;,&amp;quot;host&amp;quot;:&amp;quot;localhost&amp;quot;,&amp;quot;user&amp;quot;:&amp;quot;root&amp;quot;,&amp;quot;password&amp;quot;:&amp;quot;root&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;mydatabase&amp;quot;,&amp;quot;prefix&amp;quot;:&amp;quot;app_&amp;quot;},&lt;br /&gt;
	&amp;quot;system&amp;quot;:{&amp;quot;list_limit&amp;quot;:&amp;quot;20&amp;quot;,&amp;quot;gzip&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;offset&amp;quot;:&amp;quot;UTC&amp;quot;},&amp;quot;languages&amp;quot;:[&amp;quot;en-GB&amp;quot;]&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then when bootstrapping your app (maybe in the index.php) do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$config = json_decode(file_get_contents(JPATH_CONFIGURATION.&#039;/config.json&#039;),true);&lt;br /&gt;
	$application = new \App\App(null,new \Joomla\Registry\Registry($config));&lt;br /&gt;
	$application-&amp;gt;execute();&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in the doExecute() method of your app create a reference to the database:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$dbFactory = new Database\DatabaseFactory;&lt;br /&gt;
	$this-&amp;gt;db = $dbFactory-&amp;gt;getDriver(&lt;br /&gt;
		$this-&amp;gt;get(&#039;database.driver&#039;),&lt;br /&gt;
		array(&lt;br /&gt;
			&#039;host&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.host&#039;),&lt;br /&gt;
			&#039;user&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.user&#039;),&lt;br /&gt;
			&#039;password&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.password&#039;),&lt;br /&gt;
			&#039;port&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.port&#039;),&lt;br /&gt;
			&#039;socket&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.socket&#039;),&lt;br /&gt;
			&#039;database&#039;=&amp;gt;$this-&amp;gt;get(&#039;database.name&#039;),&lt;br /&gt;
			)&lt;br /&gt;
		);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In your controller the database can then be accessed using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	$app = $this-&amp;gt;getApplication();&lt;br /&gt;
	$db = $app-&amp;gt;db;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Purplebeanie&amp;diff=107259</id>
		<title>User:Purplebeanie</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Purplebeanie&amp;diff=107259"/>
		<updated>2014-01-29T22:53:29Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Created page with &amp;quot;A Joomla user, component developer and recently started using Joomla Framework for standalone web apps.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Joomla user, component developer and recently started using Joomla Framework for standalone web apps.&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Creating_a_content_plugin&amp;diff=67243</id>
		<title>J1.5 talk:Creating a content plugin</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Creating_a_content_plugin&amp;diff=67243"/>
		<updated>2012-05-14T06:52:28Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I edited the part concerning installing ini files as it was confusing when the inis were placed in a language/xx-XX/ folder in the pack. It looked as if these files could be installed in the site language folder. Plugins in that regard are very different from components and modules.&lt;br /&gt;
&lt;br /&gt;
== Updating to joomla 1.6/1.7/2.5 ==&lt;br /&gt;
&lt;br /&gt;
this page needs to be updated to Joomla! 1.6, 1.7 &amp;amp; 2.5&lt;br /&gt;
&lt;br /&gt;
== Loading languages in plugins ==&lt;br /&gt;
&lt;br /&gt;
I added the section about using another component / plugins language.  I needed to do this recently for an extension with a plugin and component and this was the only page I could find about loading languages.  [[User:Purplebeanie|Purplebeanie]] 01:52, 14 May 2012 (CDT)&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Creating_a_content_plugin&amp;diff=67242</id>
		<title>J1.5:Creating a content plugin</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Creating_a_content_plugin&amp;diff=67242"/>
		<updated>2012-05-14T06:50:31Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: /* INI file(s) */ mentioned that you can load an alternative component or plugin&amp;#039;s language.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
There are lots of abilities of the use of a Content Plugin. They all have to do with the display of your content and so your articles. You will need at least two files for this Plugin. An XML file and a PHP file. Because there are so many differences between two Content Plugins in the PHP file, two examples of them will be explained in this document. Also a part about internationalization (with INI files) is added. And last but not least: the Joomla! Core Content Plugin coding examples and the quick tips.&lt;br /&gt;
&lt;br /&gt;
==XML file==&lt;br /&gt;
The XML file is named the same as the PHP file, and is one of the two required files.&lt;br /&gt;
Always start off with the XML tag and define that it is written in a UTF-8 format.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install&lt;br /&gt;
  PUBLIC &amp;quot;-//Joomla! 1.5//DTD plugin 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
To define that the plugin has to be a content plugin, add this line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
The type will define it is a Plugin, the group defines the Plugin is in the group of Content Plugins.&lt;br /&gt;
&lt;br /&gt;
After that, add some information about yourself and the Plugin, like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;Name of your Content Plugin&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;creationDate&amp;gt;Created Date&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
&amp;lt;author&amp;gt;Your name&amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;authorEmail&amp;gt;Your e-mail address&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
&amp;lt;authorUrl&amp;gt;Your website&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
&amp;lt;copyright&amp;gt;Copyright&amp;lt;/copyright&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;License, for example GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;version&amp;gt;Version of the plugin&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Description of the Plugin; showed with installation and when editing &lt;br /&gt;
the Plugin in the Plugin Manager&amp;lt;/description&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
And now include your PHP file to the Content Plugin. The name of this file should be the same as the name of this XML file. Put this name also behind the plugin=&amp;quot;&amp;quot; part. &lt;br /&gt;
&lt;br /&gt;
You could also add more files for your plugin, for example an image. Just add another row between &amp;lt;files&amp;gt; and &amp;lt;/files&amp;gt;, and then place the file between &amp;lt;filename&amp;gt; tags.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;filename plugin=&amp;quot;nameofplugin&amp;quot;&amp;gt;nameofplugin.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some files, like .js or .css, are not recognized and will cause an error when you try to install the plugin. For these, simply create a new folder in the plugin directory, then add the files to the folder. Then add a line for the folder in the &amp;lt;files&amp;gt; tags. Of course, .js and .css files might be better managed better as part of the template, but if these are plugin specific then they could go here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;folder&amp;gt;scripts&amp;lt;/folder&amp;gt;&lt;br /&gt;
   &amp;lt;folder&amp;gt;css&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the internationalization, we will use language files. This is not required, but people from other countries will love it if they can easily translate your plugin to their own language. Plugin language files are always installed in administrator/languages/xx-XX/ where xx-XX is the code for a language already installed in Joomla.&lt;br /&gt;
The language tags can be found here: [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes] (use the ISO 639-1 column) and here: [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languages&amp;gt;&lt;br /&gt;
   &amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_content_nameofplugin.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/languages&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Optionally, you could add some parameters to the Plugin. These will look like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;paramname&amp;quot; type=&amp;quot;typeofparameter&amp;quot; default=&amp;quot;defaultsetting&amp;quot; label=&amp;quot;title&amp;quot; description=&amp;quot;description&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/params&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Param name:&#039;&#039;&#039; The name of the parameter. You will need this when creating the PHP file.&lt;br /&gt;
*&#039;&#039;&#039;Param type:&#039;&#039;&#039; You could choose between several types of parameters. Look at this document to learn something about the different types: [[Using the core parameter types]]&lt;br /&gt;
*&#039;&#039;&#039;Param default:&#039;&#039;&#039; The default setting for this parameter.&lt;br /&gt;
*&#039;&#039;&#039;Param label:&#039;&#039;&#039; The name of this parameter displayed in the edit screen of this Plugin in the Plugin Manager.&lt;br /&gt;
*&#039;&#039;&#039;Param description:&#039;&#039;&#039; The text which appears as a tool tip for this parameter. &lt;br /&gt;
When you do not want to use parameters, add the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;params/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And do not forget to end your XML file with the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;/install&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP file==&lt;br /&gt;
Start your PHP file with the general licensing and author information about your content plugin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @version		$Id: nameofplugin.php revision date lasteditedby $&lt;br /&gt;
 * @package		Joomla&lt;br /&gt;
 * @subpackage	Content&lt;br /&gt;
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.&lt;br /&gt;
 * @license		GNU/GPL, see LICENSE.php&lt;br /&gt;
 * Joomla! is free software. This version may have been modified pursuant&lt;br /&gt;
 * to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
 * is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
 * other free or open source software licenses.&lt;br /&gt;
 * See COPYRIGHT.php for copyright notices and details.&lt;br /&gt;
 */ &amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Next, always put the following code in any PHP file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
This prevents people from directly accessing this PHP file.&lt;br /&gt;
&lt;br /&gt;
After that, you should import the general plugin file of Joomla!&#039;s library&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;jimport( &#039;joomla.plugin.plugin&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To indicate that you&#039;re writing a Content plugin, add the following code.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;class plgContentNameofplugin extends JPlugin {&amp;lt;/source&amp;gt;&lt;br /&gt;
Please note the use of capital letters. You should replace Nameofplugin by the name of your own plugin.&lt;br /&gt;
&lt;br /&gt;
Now, it&#039;s time to construct the plugin:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;/**&lt;br /&gt;
 * Constructor&lt;br /&gt;
 *&lt;br /&gt;
 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
 *&lt;br /&gt;
 * @param object $subject The object to observe&lt;br /&gt;
 * @param object $params  The object that holds the plugin parameters&lt;br /&gt;
 * @since 1.5&lt;br /&gt;
 */&lt;br /&gt;
	function plgContentNameofplugin( &amp;amp;$subject, $params )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $params );&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should choose now at which moment the plugin should be rendered. You can choose from the following:&lt;br /&gt;
&lt;br /&gt;
* onBeforeContentSave : This is an event that is called right before the content is saved into the database.&lt;br /&gt;
* onAfterContentSave : This is an event that is called after the content is saved into the database.&lt;br /&gt;
* onPrepareContent : This is the first stage in preparing content for output and is the most common point for content orientated plugins to do their work.&lt;br /&gt;
* onAfterDisplayTitle : This is a request for information that should be placed between the content title and the content body.&lt;br /&gt;
* onBeforeDisplayContent : This is a request for information that should be placed immediately before the generated content.&lt;br /&gt;
* onAfterDisplayContent : This is a request for information that should be placed immediately after the generated content.&lt;br /&gt;
&lt;br /&gt;
More information on which type you should use for your plugin, including several examples, can be found here: [[Plugin events/Content]]&lt;br /&gt;
&lt;br /&gt;
===onBeforeContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that is being saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content is about to be created.&lt;br /&gt;
&lt;br /&gt;
===onAfterContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that was saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content was created.&lt;br /&gt;
&lt;br /&gt;
===onPrepareContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onPrepareContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		//no return value&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayTitle===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayTitle( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
	&lt;br /&gt;
===onBeforeDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator. &lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
==PHP file - Example==&lt;br /&gt;
This example PHP file is about the Content Plugin load module. It is a plugin made for displaying modules within the articles. &lt;br /&gt;
The commented PHP file used in this example is the file which will be included in Joomla! 1.6. This has been done because the content plugin files in Joomla! 1.5 are not refactored yet to the new standards. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// The general information at the top of each file&lt;br /&gt;
/**&lt;br /&gt;
* @version		$Id$&lt;br /&gt;
* @package		Joomla&lt;br /&gt;
* @copyright	Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license		GNU General Public License, see LICENSE.php&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access allowed to this file&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&lt;br /&gt;
&lt;br /&gt;
// Import Joomla! Plugin library file&lt;br /&gt;
jimport(&#039;joomla.plugin.plugin&#039;);&lt;br /&gt;
&lt;br /&gt;
//The Content plugin Loadmodule&lt;br /&gt;
class plgContentLoadmodule extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	* Plugin that loads module positions within content&lt;br /&gt;
	*/&lt;br /&gt;
// onPrepareContent, meaning the plugin is rendered at the first stage in preparing content for output&lt;br /&gt;
	public function onPrepareContent( &amp;amp;$row, &amp;amp;$params, $page=0 )&lt;br /&gt;
	{&lt;br /&gt;
                // A database connection is created&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		// simple performance check to determine whether bot should process further&lt;br /&gt;
		if ( JString::strpos( $row-&amp;gt;text, &#039;loadposition&#039; ) === false ) {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// expression to search for&lt;br /&gt;
	 	$regex = &#039;/{loadposition\s*.*?}/i&#039;;&lt;br /&gt;
&lt;br /&gt;
		// check whether plugin has been unpublished&lt;br /&gt;
		if ( !$this-&amp;gt;params-&amp;gt;get( &#039;enabled&#039;, 1 ) ) {&lt;br /&gt;
			$row-&amp;gt;text = preg_replace( $regex, &#039;&#039;, $row-&amp;gt;text );&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// find all instances of plugin and put in $matches&lt;br /&gt;
		preg_match_all( $regex, $row-&amp;gt;text, $matches );&lt;br /&gt;
&lt;br /&gt;
		// Number of plugins&lt;br /&gt;
	 	$count = count( $matches[0] );&lt;br /&gt;
&lt;br /&gt;
	 	// plugin only processes if there are any instances of the plugin in the text&lt;br /&gt;
	 	if ( $count ) {&lt;br /&gt;
			// Get plugin parameters&lt;br /&gt;
		 	$style	= $this-&amp;gt;params-&amp;gt;def( &#039;style&#039;, -2 );&lt;br /&gt;
	 		$this-&amp;gt;_process( $row, $matches, $count, $regex, $style );&lt;br /&gt;
		}&lt;br /&gt;
		// No return value&lt;br /&gt;
	}&lt;br /&gt;
// The proccessing function&lt;br /&gt;
	protected function _process( &amp;amp;$row, &amp;amp;$matches, $count, $regex, $style )&lt;br /&gt;
	{&lt;br /&gt;
	 	for ( $i=0; $i &amp;lt; $count; $i++ )&lt;br /&gt;
		{&lt;br /&gt;
	 		$load = str_replace( &#039;loadposition&#039;, &#039;&#039;, $matches[0][$i] );&lt;br /&gt;
	 		$load = str_replace( &#039;{&#039;, &#039;&#039;, $load );&lt;br /&gt;
	 		$load = str_replace( &#039;}&#039;, &#039;&#039;, $load );&lt;br /&gt;
 			$load = trim( $load );&lt;br /&gt;
&lt;br /&gt;
			$modules	= $this-&amp;gt;_load( $load, $style );&lt;br /&gt;
			$row-&amp;gt;text 	= preg_replace( &#039;{&#039;. $matches[0][$i] .&#039;}&#039;, $modules, $row-&amp;gt;text );&lt;br /&gt;
	 	}&lt;br /&gt;
&lt;br /&gt;
	  	// removes tags without matching module positions&lt;br /&gt;
		$row-&amp;gt;text = preg_replace( $regex, &#039;&#039;, $row-&amp;gt;text );&lt;br /&gt;
	}&lt;br /&gt;
// The function who takes care for the &#039;completing&#039; of the plugins&#039; actions : loading the module(s)&lt;br /&gt;
	protected function _load( $position, $style=-2 )&lt;br /&gt;
	{&lt;br /&gt;
		$document	= &amp;amp;JFactory::getDocument();&lt;br /&gt;
		$renderer	= $document-&amp;gt;loadRenderer(&#039;module&#039;);&lt;br /&gt;
		$params		= array(&#039;style&#039;=&amp;gt;$style);&lt;br /&gt;
&lt;br /&gt;
		$contents = &#039;&#039;;&lt;br /&gt;
		foreach (JModuleHelper::getModules($position) as $mod)  {&lt;br /&gt;
			$contents .= $renderer-&amp;gt;render($mod, $params);&lt;br /&gt;
		}&lt;br /&gt;
		return $contents;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INI file(s)==&lt;br /&gt;
For internationalization it is good to use the INI files. You can add to the language file everything which outputs text to the user, in this order: &lt;br /&gt;
*XML description tag &lt;br /&gt;
*XML label and description attributes from parameters &lt;br /&gt;
*JText::_( &#039;string&#039; ) used by the plugin&lt;br /&gt;
&lt;br /&gt;
You should create two files: One for the backend and one for the front end. The naming should match the path of the extension. For example, if we were creating a content plugin named &#039;example&#039; and it is installed at plugins/content/example, then our files should be named:&lt;br /&gt;
*en-US.plg_content_example.ini (Frontend)&lt;br /&gt;
*en-US.plg_content_example.sys.ini (Backend)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Start your INI file with something like this: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;# $Id: en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
# Joomla! Project&lt;br /&gt;
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.&lt;br /&gt;
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php&lt;br /&gt;
# Note : All ini files need to be saved as UTF-8 - No BOM&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course, you could also add other information, like the author. &lt;br /&gt;
&lt;br /&gt;
Joomla 1.6+ uses the ; at the start of the line, rather than the #.&lt;br /&gt;
&lt;br /&gt;
Backend Example: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;param name=&amp;quot;mode&amp;quot; type=&amp;quot;list&amp;quot; default=&amp;quot;1&amp;quot; label=&amp;quot;PLG_CONTENT_EXAMPLE_MODE&amp;quot; description=&amp;quot;PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT&amp;lt;/option&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;PLG_CONTENT_EXAMPLE_LINKABLE_TEXT&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/param&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The localized strings are translated in the ini file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_MODE=Mode&lt;br /&gt;
PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED=Select how the e-mails will be displayed&lt;br /&gt;
PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT=Nonlinkable text&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKABLE_TEXT=As linkable mailto address&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Best practice dictates that LOCALIZED_TAGS are all upper case, no spaces, and begin with the same name as the extension - to avoid interfering with other strings.&lt;br /&gt;
&lt;br /&gt;
The localized tags can then be translated into multiple languages.When you want to make your Content Plugin available in more languages, first add them to the &amp;lt;languages&amp;gt; tag in the XML file. Then create the same INI file, and change the part after the =, for example the dutch version would be: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_MODE=Modus&lt;br /&gt;
PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED=Selecteer hoe de e-mails worden weergegeven&lt;br /&gt;
PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT=Niet-linkbare tekst&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKABLE_TEXT=Als een linkbaar mailto adres&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frontend Example:&lt;br /&gt;
On Joomla 1.6+ you must create a separate file for the front end - as described above. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKNAME=&amp;quot;The Name of the Link Goes Here!&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the plugin&#039;s php file, you must load the language file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
// Load user_profile plugin language&lt;br /&gt;
$lang = JFactory::getLanguage();&lt;br /&gt;
$lang-&amp;gt;load(&#039;plg_content_simpleattachment&#039;, JPATH_ADMINISTRATOR);&lt;br /&gt;
echo JText::_(&#039;PLG_CONTENT_EXAMPLE_LINKNAME&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You could also use another component or plugin&#039;s language file.  This is useful for maintaining consistent strings between a component, module, and plugin, that are part of the same package.&lt;br /&gt;
&lt;br /&gt;
To load another component or plugin&#039;s language files specify it&#039;s name in the load statement and specify whether to use the site or administrator language.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$lang-&amp;gt;load(&#039;com_someothercomponent&#039;,JPATH_ADMINISTRATOR);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Coding examples==&lt;br /&gt;
There are seven Joomla! Core Content Plugins. These are all not yet refactored to the new standards. For learning how to write good plugins, its better to look at the (refactored) files of Joomla! 1.6.&lt;br /&gt;
You can see them &#039;working&#039; when you go to the Back-end of your Joomla! 1.5 installation, then go to the menu &#039;Extensions&#039; and select the &#039;Plugin Manager&#039;. Click on the name of the Plugin to edit it; and see it working. Also watch the content and see what happens when you insert a pagebreak for example.&lt;br /&gt;
&lt;br /&gt;
==Quick tips==&lt;br /&gt;
*In the PHP file you often forget to place an semicolon (;) at the end of a row, which causes errors. Check this before you test your Plugin and you will eliminate many errors. &lt;br /&gt;
*Take care of the fact that the parameters in the XML file are closed correctly. When you add options for example, you need to close it with &amp;lt;/param&amp;gt;. &lt;br /&gt;
*It is easy to test on a localhost when you are still busy with editing your Plugin. &lt;br /&gt;
*A typical zip will contain the following: &lt;br /&gt;
**nameofplugin.XML &lt;br /&gt;
**nameofplugin.PHP &lt;br /&gt;
**en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
&lt;br /&gt;
[[Category:Articles that require a review]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5:Creating_a_content_plugin&amp;diff=67241</id>
		<title>J1.5:Creating a content plugin</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5:Creating_a_content_plugin&amp;diff=67241"/>
		<updated>2012-05-14T06:38:08Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: just changed the example of loading a plugin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
There are lots of abilities of the use of a Content Plugin. They all have to do with the display of your content and so your articles. You will need at least two files for this Plugin. An XML file and a PHP file. Because there are so many differences between two Content Plugins in the PHP file, two examples of them will be explained in this document. Also a part about internationalization (with INI files) is added. And last but not least: the Joomla! Core Content Plugin coding examples and the quick tips.&lt;br /&gt;
&lt;br /&gt;
==XML file==&lt;br /&gt;
The XML file is named the same as the PHP file, and is one of the two required files.&lt;br /&gt;
Always start off with the XML tag and define that it is written in a UTF-8 format.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE install&lt;br /&gt;
  PUBLIC &amp;quot;-//Joomla! 1.5//DTD plugin 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
To define that the plugin has to be a content plugin, add this line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
The type will define it is a Plugin, the group defines the Plugin is in the group of Content Plugins.&lt;br /&gt;
&lt;br /&gt;
After that, add some information about yourself and the Plugin, like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;Name of your Content Plugin&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;creationDate&amp;gt;Created Date&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
&amp;lt;author&amp;gt;Your name&amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;authorEmail&amp;gt;Your e-mail address&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
&amp;lt;authorUrl&amp;gt;Your website&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
&amp;lt;copyright&amp;gt;Copyright&amp;lt;/copyright&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;License, for example GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;version&amp;gt;Version of the plugin&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Description of the Plugin; showed with installation and when editing &lt;br /&gt;
the Plugin in the Plugin Manager&amp;lt;/description&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
And now include your PHP file to the Content Plugin. The name of this file should be the same as the name of this XML file. Put this name also behind the plugin=&amp;quot;&amp;quot; part. &lt;br /&gt;
&lt;br /&gt;
You could also add more files for your plugin, for example an image. Just add another row between &amp;lt;files&amp;gt; and &amp;lt;/files&amp;gt;, and then place the file between &amp;lt;filename&amp;gt; tags.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;filename plugin=&amp;quot;nameofplugin&amp;quot;&amp;gt;nameofplugin.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some files, like .js or .css, are not recognized and will cause an error when you try to install the plugin. For these, simply create a new folder in the plugin directory, then add the files to the folder. Then add a line for the folder in the &amp;lt;files&amp;gt; tags. Of course, .js and .css files might be better managed better as part of the template, but if these are plugin specific then they could go here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;folder&amp;gt;scripts&amp;lt;/folder&amp;gt;&lt;br /&gt;
   &amp;lt;folder&amp;gt;css&amp;lt;/folder&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the internationalization, we will use language files. This is not required, but people from other countries will love it if they can easily translate your plugin to their own language. Plugin language files are always installed in administrator/languages/xx-XX/ where xx-XX is the code for a language already installed in Joomla.&lt;br /&gt;
The language tags can be found here: [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes] (use the ISO 639-1 column) and here: [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languages&amp;gt;&lt;br /&gt;
   &amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_content_nameofplugin.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/languages&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Optionally, you could add some parameters to the Plugin. These will look like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;paramname&amp;quot; type=&amp;quot;typeofparameter&amp;quot; default=&amp;quot;defaultsetting&amp;quot; label=&amp;quot;title&amp;quot; description=&amp;quot;description&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/params&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;Param name:&#039;&#039;&#039; The name of the parameter. You will need this when creating the PHP file.&lt;br /&gt;
*&#039;&#039;&#039;Param type:&#039;&#039;&#039; You could choose between several types of parameters. Look at this document to learn something about the different types: [[Using the core parameter types]]&lt;br /&gt;
*&#039;&#039;&#039;Param default:&#039;&#039;&#039; The default setting for this parameter.&lt;br /&gt;
*&#039;&#039;&#039;Param label:&#039;&#039;&#039; The name of this parameter displayed in the edit screen of this Plugin in the Plugin Manager.&lt;br /&gt;
*&#039;&#039;&#039;Param description:&#039;&#039;&#039; The text which appears as a tool tip for this parameter. &lt;br /&gt;
When you do not want to use parameters, add the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;params/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And do not forget to end your XML file with the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;/install&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP file==&lt;br /&gt;
Start your PHP file with the general licensing and author information about your content plugin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @version		$Id: nameofplugin.php revision date lasteditedby $&lt;br /&gt;
 * @package		Joomla&lt;br /&gt;
 * @subpackage	Content&lt;br /&gt;
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.&lt;br /&gt;
 * @license		GNU/GPL, see LICENSE.php&lt;br /&gt;
 * Joomla! is free software. This version may have been modified pursuant&lt;br /&gt;
 * to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
 * is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
 * other free or open source software licenses.&lt;br /&gt;
 * See COPYRIGHT.php for copyright notices and details.&lt;br /&gt;
 */ &amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Next, always put the following code in any PHP file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
This prevents people from directly accessing this PHP file.&lt;br /&gt;
&lt;br /&gt;
After that, you should import the general plugin file of Joomla!&#039;s library&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;jimport( &#039;joomla.plugin.plugin&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To indicate that you&#039;re writing a Content plugin, add the following code.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;class plgContentNameofplugin extends JPlugin {&amp;lt;/source&amp;gt;&lt;br /&gt;
Please note the use of capital letters. You should replace Nameofplugin by the name of your own plugin.&lt;br /&gt;
&lt;br /&gt;
Now, it&#039;s time to construct the plugin:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;/**&lt;br /&gt;
 * Constructor&lt;br /&gt;
 *&lt;br /&gt;
 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
 *&lt;br /&gt;
 * @param object $subject The object to observe&lt;br /&gt;
 * @param object $params  The object that holds the plugin parameters&lt;br /&gt;
 * @since 1.5&lt;br /&gt;
 */&lt;br /&gt;
	function plgContentNameofplugin( &amp;amp;$subject, $params )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $params );&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should choose now at which moment the plugin should be rendered. You can choose from the following:&lt;br /&gt;
&lt;br /&gt;
* onBeforeContentSave : This is an event that is called right before the content is saved into the database.&lt;br /&gt;
* onAfterContentSave : This is an event that is called after the content is saved into the database.&lt;br /&gt;
* onPrepareContent : This is the first stage in preparing content for output and is the most common point for content orientated plugins to do their work.&lt;br /&gt;
* onAfterDisplayTitle : This is a request for information that should be placed between the content title and the content body.&lt;br /&gt;
* onBeforeDisplayContent : This is a request for information that should be placed immediately before the generated content.&lt;br /&gt;
* onAfterDisplayContent : This is a request for information that should be placed immediately after the generated content.&lt;br /&gt;
&lt;br /&gt;
More information on which type you should use for your plugin, including several examples, can be found here: [[Plugin events/Content]]&lt;br /&gt;
&lt;br /&gt;
===onBeforeContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that is being saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content is about to be created.&lt;br /&gt;
&lt;br /&gt;
===onAfterContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that was saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content was created.&lt;br /&gt;
&lt;br /&gt;
===onPrepareContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onPrepareContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		//no return value&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayTitle===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayTitle( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
	&lt;br /&gt;
===onBeforeDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator. &lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
//add your plugin codes here&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
==PHP file - Example==&lt;br /&gt;
This example PHP file is about the Content Plugin load module. It is a plugin made for displaying modules within the articles. &lt;br /&gt;
The commented PHP file used in this example is the file which will be included in Joomla! 1.6. This has been done because the content plugin files in Joomla! 1.5 are not refactored yet to the new standards. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// The general information at the top of each file&lt;br /&gt;
/**&lt;br /&gt;
* @version		$Id$&lt;br /&gt;
* @package		Joomla&lt;br /&gt;
* @copyright	Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license		GNU General Public License, see LICENSE.php&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access allowed to this file&lt;br /&gt;
defined( &#039;_JEXEC&#039; ) or die( &#039;Restricted access&#039; );&lt;br /&gt;
&lt;br /&gt;
// Import Joomla! Plugin library file&lt;br /&gt;
jimport(&#039;joomla.plugin.plugin&#039;);&lt;br /&gt;
&lt;br /&gt;
//The Content plugin Loadmodule&lt;br /&gt;
class plgContentLoadmodule extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	* Plugin that loads module positions within content&lt;br /&gt;
	*/&lt;br /&gt;
// onPrepareContent, meaning the plugin is rendered at the first stage in preparing content for output&lt;br /&gt;
	public function onPrepareContent( &amp;amp;$row, &amp;amp;$params, $page=0 )&lt;br /&gt;
	{&lt;br /&gt;
                // A database connection is created&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		// simple performance check to determine whether bot should process further&lt;br /&gt;
		if ( JString::strpos( $row-&amp;gt;text, &#039;loadposition&#039; ) === false ) {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// expression to search for&lt;br /&gt;
	 	$regex = &#039;/{loadposition\s*.*?}/i&#039;;&lt;br /&gt;
&lt;br /&gt;
		// check whether plugin has been unpublished&lt;br /&gt;
		if ( !$this-&amp;gt;params-&amp;gt;get( &#039;enabled&#039;, 1 ) ) {&lt;br /&gt;
			$row-&amp;gt;text = preg_replace( $regex, &#039;&#039;, $row-&amp;gt;text );&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// find all instances of plugin and put in $matches&lt;br /&gt;
		preg_match_all( $regex, $row-&amp;gt;text, $matches );&lt;br /&gt;
&lt;br /&gt;
		// Number of plugins&lt;br /&gt;
	 	$count = count( $matches[0] );&lt;br /&gt;
&lt;br /&gt;
	 	// plugin only processes if there are any instances of the plugin in the text&lt;br /&gt;
	 	if ( $count ) {&lt;br /&gt;
			// Get plugin parameters&lt;br /&gt;
		 	$style	= $this-&amp;gt;params-&amp;gt;def( &#039;style&#039;, -2 );&lt;br /&gt;
	 		$this-&amp;gt;_process( $row, $matches, $count, $regex, $style );&lt;br /&gt;
		}&lt;br /&gt;
		// No return value&lt;br /&gt;
	}&lt;br /&gt;
// The proccessing function&lt;br /&gt;
	protected function _process( &amp;amp;$row, &amp;amp;$matches, $count, $regex, $style )&lt;br /&gt;
	{&lt;br /&gt;
	 	for ( $i=0; $i &amp;lt; $count; $i++ )&lt;br /&gt;
		{&lt;br /&gt;
	 		$load = str_replace( &#039;loadposition&#039;, &#039;&#039;, $matches[0][$i] );&lt;br /&gt;
	 		$load = str_replace( &#039;{&#039;, &#039;&#039;, $load );&lt;br /&gt;
	 		$load = str_replace( &#039;}&#039;, &#039;&#039;, $load );&lt;br /&gt;
 			$load = trim( $load );&lt;br /&gt;
&lt;br /&gt;
			$modules	= $this-&amp;gt;_load( $load, $style );&lt;br /&gt;
			$row-&amp;gt;text 	= preg_replace( &#039;{&#039;. $matches[0][$i] .&#039;}&#039;, $modules, $row-&amp;gt;text );&lt;br /&gt;
	 	}&lt;br /&gt;
&lt;br /&gt;
	  	// removes tags without matching module positions&lt;br /&gt;
		$row-&amp;gt;text = preg_replace( $regex, &#039;&#039;, $row-&amp;gt;text );&lt;br /&gt;
	}&lt;br /&gt;
// The function who takes care for the &#039;completing&#039; of the plugins&#039; actions : loading the module(s)&lt;br /&gt;
	protected function _load( $position, $style=-2 )&lt;br /&gt;
	{&lt;br /&gt;
		$document	= &amp;amp;JFactory::getDocument();&lt;br /&gt;
		$renderer	= $document-&amp;gt;loadRenderer(&#039;module&#039;);&lt;br /&gt;
		$params		= array(&#039;style&#039;=&amp;gt;$style);&lt;br /&gt;
&lt;br /&gt;
		$contents = &#039;&#039;;&lt;br /&gt;
		foreach (JModuleHelper::getModules($position) as $mod)  {&lt;br /&gt;
			$contents .= $renderer-&amp;gt;render($mod, $params);&lt;br /&gt;
		}&lt;br /&gt;
		return $contents;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INI file(s)==&lt;br /&gt;
For internationalization it is good to use the INI files. You can add to the language file everything which outputs text to the user, in this order: &lt;br /&gt;
*XML description tag &lt;br /&gt;
*XML label and description attributes from parameters &lt;br /&gt;
*JText::_( &#039;string&#039; ) used by the plugin&lt;br /&gt;
&lt;br /&gt;
You should create two files: One for the backend and one for the front end. The naming should match the path of the extension. For example, if we were creating a content plugin named &#039;example&#039; and it is installed at plugins/content/example, then our files should be named:&lt;br /&gt;
*en-US.plg_content_example.ini (Frontend)&lt;br /&gt;
*en-US.plg_content_example.sys.ini (Backend)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Start your INI file with something like this: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;# $Id: en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
# Joomla! Project&lt;br /&gt;
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.&lt;br /&gt;
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php&lt;br /&gt;
# Note : All ini files need to be saved as UTF-8 - No BOM&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course, you could also add other information, like the author. &lt;br /&gt;
&lt;br /&gt;
Joomla 1.6+ uses the ; at the start of the line, rather than the #.&lt;br /&gt;
&lt;br /&gt;
Backend Example: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;param name=&amp;quot;mode&amp;quot; type=&amp;quot;list&amp;quot; default=&amp;quot;1&amp;quot; label=&amp;quot;PLG_CONTENT_EXAMPLE_MODE&amp;quot; description=&amp;quot;PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT&amp;lt;/option&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;PLG_CONTENT_EXAMPLE_LINKABLE_TEXT&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/param&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The localized strings are translated in the ini file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_MODE=Mode&lt;br /&gt;
PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED=Select how the e-mails will be displayed&lt;br /&gt;
PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT=Nonlinkable text&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKABLE_TEXT=As linkable mailto address&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Best practice dictates that LOCALIZED_TAGS are all upper case, no spaces, and begin with the same name as the extension - to avoid interfering with other strings.&lt;br /&gt;
&lt;br /&gt;
The localized tags can then be translated into multiple languages.When you want to make your Content Plugin available in more languages, first add them to the &amp;lt;languages&amp;gt; tag in the XML file. Then create the same INI file, and change the part after the =, for example the dutch version would be: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_MODE=Modus&lt;br /&gt;
PLG_CONTENT_EXAMPLE_EMAILS_DISPLAYED=Selecteer hoe de e-mails worden weergegeven&lt;br /&gt;
PLG_CONTENT_EXAMPLE_NONLINKABLE_TEXT=Niet-linkbare tekst&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKABLE_TEXT=Als een linkbaar mailto adres&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frontend Example:&lt;br /&gt;
On Joomla 1.6+ you must create a separate file for the front end - as described above. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
PLG_CONTENT_EXAMPLE_LINKNAME=&amp;quot;The Name of the Link Goes Here!&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the plugin&#039;s php file, you must load the language file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
// Load user_profile plugin language&lt;br /&gt;
$lang = JFactory::getLanguage();&lt;br /&gt;
$lang-&amp;gt;load(&#039;plg_content_simpleattachment&#039;, JPATH_ADMINISTRATOR);&lt;br /&gt;
echo JText::_(&#039;PLG_CONTENT_EXAMPLE_LINKNAME&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Coding examples==&lt;br /&gt;
There are seven Joomla! Core Content Plugins. These are all not yet refactored to the new standards. For learning how to write good plugins, its better to look at the (refactored) files of Joomla! 1.6.&lt;br /&gt;
You can see them &#039;working&#039; when you go to the Back-end of your Joomla! 1.5 installation, then go to the menu &#039;Extensions&#039; and select the &#039;Plugin Manager&#039;. Click on the name of the Plugin to edit it; and see it working. Also watch the content and see what happens when you insert a pagebreak for example.&lt;br /&gt;
&lt;br /&gt;
==Quick tips==&lt;br /&gt;
*In the PHP file you often forget to place an semicolon (;) at the end of a row, which causes errors. Check this before you test your Plugin and you will eliminate many errors. &lt;br /&gt;
*Take care of the fact that the parameters in the XML file are closed correctly. When you add options for example, you need to close it with &amp;lt;/param&amp;gt;. &lt;br /&gt;
*It is easy to test on a localhost when you are still busy with editing your Plugin. &lt;br /&gt;
*A typical zip will contain the following: &lt;br /&gt;
**nameofplugin.XML &lt;br /&gt;
**nameofplugin.PHP &lt;br /&gt;
**en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
&lt;br /&gt;
[[Category:Articles that require a review]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66863</id>
		<title>Talk:Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66863"/>
		<updated>2012-04-30T02:47:58Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve added a few more points that I had to scratch around for a bit when I first started using Joomla.  Some of them may be a bit basic for what we are trying to achieve here but I&#039;ve also seen some of these come out quite often in the forums. [[User:Purplebeanie|Purplebeanie]] 00:46, 29 April 2012 (CDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is it also adding a section for how to do simple tasks that the admin might normally have used jQuery for in Mootools?? [[User:Purplebeanie|Purplebeanie]] 21:47, 29 April 2012 (CDT)&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66861</id>
		<title>Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66861"/>
		<updated>2012-04-29T05:49:38Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Think about your day as a Joomla site administrator and the tasks you had to perform.  Think about the goals you were trying to achieve then break those goals down into a set a of short titles that can be added to this page.  This is a temporary page that will be transformed into something else at a later stage.&lt;br /&gt;
&lt;br /&gt;
* Add a new page to the website&lt;br /&gt;
* Remove a menu item&lt;br /&gt;
* Change menu items to different content&lt;br /&gt;
* Change the logo&lt;br /&gt;
* Change article display settings (show dates/ email icons / authors) based on article, category, and global options&lt;br /&gt;
* Add a new module&lt;br /&gt;
* Find out what module positions would show where on the page&lt;br /&gt;
* Set cache settings, and once set remember to purge cache to see changes&lt;br /&gt;
* How Metadata settings affect things like mod_relateditems&lt;br /&gt;
* Accessing page statistics (might be a bit basic)&lt;br /&gt;
* How to implement Google Analytics / Piwik / xxxxx tracking scripts&lt;br /&gt;
* How to backup my site - SQL databases and files and maybe cover backup to something like Amazon S3?&lt;br /&gt;
* How to enable remote authoring tools XML/RPC etc. etc.&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66860</id>
		<title>Talk:Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66860"/>
		<updated>2012-04-29T05:46:36Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve added a few more points that I had to scratch around for a bit when I first started using Joomla.  Some of them may be a bit basic for what we are trying to achieve here but I&#039;ve also seen some of these come out quite often in the forums. [[User:Purplebeanie|Purplebeanie]] 00:46, 29 April 2012 (CDT)&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66859</id>
		<title>Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66859"/>
		<updated>2012-04-29T05:46:10Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Think about your day as a Joomla site administrator and the tasks you had to perform.  Think about the goals you were trying to achieve then break those goals down into a set a of short titles that can be added to this page.  This is a temporary page that will be transformed into something else at a later stage.&lt;br /&gt;
&lt;br /&gt;
* Add a new page to the website&lt;br /&gt;
* Remove a menu item&lt;br /&gt;
* Change menu items to different content&lt;br /&gt;
* Change the logo&lt;br /&gt;
* Change article display settings (show dates/ email icons / authors) based on article, category, and global options&lt;br /&gt;
* Add a new module&lt;br /&gt;
* Find out what module positions would show where on the page&lt;br /&gt;
* Set cache settings, and once set remember to purge cache to see changes&lt;br /&gt;
* How Metadata settings affect things like mod_relateditems&lt;br /&gt;
* Accessing page statistics (might be a bit basic)&lt;br /&gt;
* How to implement Google Analytics / Piwik / xxxxx tracking scripts&lt;br /&gt;
* How to backup my site - SQL databases and files and maybe cover backup to something like Amazon S3?&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66858</id>
		<title>Talk:Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Administrator_goals&amp;diff=66858"/>
		<updated>2012-04-29T03:04:19Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: Created page with &amp;quot;I&amp;#039;ve added a few more points that I had to scratch around for a bit when I first started using Joomla.  Some of them may be a bit basic for what we are trying to achieve here but...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve added a few more points that I had to scratch around for a bit when I first started using Joomla.  Some of them may be a bit basic for what we are trying to achieve here but I&#039;ve also seen some of these come out quite often in the forums.&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66857</id>
		<title>Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66857"/>
		<updated>2012-04-29T03:02:56Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Think about your day as a Joomla site administrator and the tasks you had to perform.  Think about the goals you were trying to achieve then break those goals down into a set a of short titles that can be added to this page.  This is a temporary page that will be transformed into something else at a later stage.&lt;br /&gt;
&lt;br /&gt;
* Add a new page to the website&lt;br /&gt;
* Remove a menu item&lt;br /&gt;
* Change menu items to different content&lt;br /&gt;
* Change the logo&lt;br /&gt;
* Change article display settings (show dates/ email icons / authors) based on article, category, and global options&lt;br /&gt;
* Add a new module&lt;br /&gt;
* Find out what module positions would show where on the page&lt;br /&gt;
* Set cache settings, and once set remember to purge cache to see changes&lt;br /&gt;
* How Metadata settings affect things like mod_relateditems&lt;br /&gt;
* Accessing page statistics (might be a bit basic)&lt;br /&gt;
* How to implement Google Analytics / Piwik / xxxxx tracking scripts&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66856</id>
		<title>Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66856"/>
		<updated>2012-04-29T02:26:03Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Think about your day as a Joomla site administrator and the tasks you had to perform.  Think about the goals you were trying to achieve then break those goals down into a set a of short titles that can be added to this page.  This is a temporary page that will be transformed into something else at a later stage.&lt;br /&gt;
&lt;br /&gt;
* Add a new page to the website&lt;br /&gt;
* Remove a menu item&lt;br /&gt;
* Change menu items to different content&lt;br /&gt;
* Change the logo&lt;br /&gt;
* Change article display settings (show dates/ email icons / authors) based on article, category, and global options&lt;br /&gt;
* Add a new module&lt;br /&gt;
* Find out what module positions would show where on the page&lt;br /&gt;
* Set cache settings, and once set remember to purge cache to see changes&lt;br /&gt;
* How Metadata settings affect things like mod_relateditems&lt;br /&gt;
* Accessing page statistics (might be a bit basic)&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66855</id>
		<title>Administrator goals</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Administrator_goals&amp;diff=66855"/>
		<updated>2012-04-29T02:22:59Z</updated>

		<summary type="html">&lt;p&gt;Purplebeanie: added a few mote items to the list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Think about your day as a Joomla site administrator and the tasks you had to perform.  Think about the goals you were trying to achieve then break those goals down into a set a of short titles that can be added to this page.  This is a temporary page that will be transformed into something else at a later stage.&lt;br /&gt;
&lt;br /&gt;
* Add a new page to the website&lt;br /&gt;
* Remove a menu item&lt;br /&gt;
* Change menu items to different content&lt;br /&gt;
* Change the logo&lt;br /&gt;
* Change article display settings (show dates/ email icons / authors) based on article, category, and global options&lt;br /&gt;
* Add a new module&lt;br /&gt;
* Find out what module positions would show where on the page&lt;br /&gt;
* Set cache settings, and once set remember to purge cache to see changes&lt;/div&gt;</summary>
		<author><name>Purplebeanie</name></author>
	</entry>
</feed>