<?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=Petergeier</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=Petergeier"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Petergeier"/>
	<updated>2026-08-11T04:23:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Enabling_Search_Engine_Friendly_(SEF)_URLs_on_IIS&amp;diff=29915</id>
		<title>Enabling Search Engine Friendly (SEF) URLs on IIS</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Enabling_Search_Engine_Friendly_(SEF)_URLs_on_IIS&amp;diff=29915"/>
		<updated>2010-08-23T03:03:19Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: /* Helicon ISAPI Rewrite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under IIS7, a native URL Rewite module is available. It stores rules in a site&#039;s web.config file, expressed in XML format. .htaccess rules can be converted to the web.config format.&lt;br /&gt;
&lt;br /&gt;
Under IIS6, a third-party add-on must be used. Helicon provides one which directly supports .htaccess rules.&lt;br /&gt;
&lt;br /&gt;
==IIS 7 URL Rewriting==&lt;br /&gt;
If you have a server running IIS 7 and PHP, you can take advantage of IIS&#039;s own internal URL rewriting by using a web.config file similar to the one listed below. &lt;br /&gt;
&lt;br /&gt;
You can create the file yourself or use the GUI in the IIS7 Manager. You can import .htaccess rules using the GUI/wizard.&lt;br /&gt;
&lt;br /&gt;
This functionality depends on the presence of the &#039;&#039;&#039;IIS URL Rewrite Module&#039;&#039;&#039;, which does not come with Windows. It is a free download and a Microsoft product.&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
If the IIS URL Rewrite module is installed, your website manager will have a tool for &amp;quot;URL Rewrite&amp;quot;, visible in the IIS Manager&#039;s view of your site&#039;s configurable IIS modules. The interface is largely self-explanatory. Regular expressions, wildcards or exact matches are all supported.&lt;br /&gt;
&lt;br /&gt;
===web.config===&lt;br /&gt;
This has been tested on Joomla 1.5 with IIS 7 on Windows Server 2008 with no problems so far. For more information on converting .htaccess to web.config, check out http://learn.iis.net/page.aspx/557/translate-htaccess-content-to-iis-webconfig/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&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;configuration&amp;gt;&lt;br /&gt;
    &amp;lt;system.webServer&amp;gt;&lt;br /&gt;
        &amp;lt;rewrite&amp;gt;&lt;br /&gt;
            &amp;lt;rules&amp;gt;&lt;br /&gt;
                &amp;lt;clear /&amp;gt;&lt;br /&gt;
                &amp;lt;rule name=&amp;quot;Common Exploit Blocking&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;match url=&amp;quot;^(.*)$&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;conditions logicalGrouping=&amp;quot;MatchAny&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{QUERY_STRING}&amp;quot; pattern=&amp;quot;mosConfig_[a-zA-Z_]{1,21}(=|\%3D)&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{QUERY_STRING}&amp;quot; pattern=&amp;quot;base64_encode.*\(.*\)&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{QUERY_STRING}&amp;quot; pattern=&amp;quot;(\&amp;amp;lt;|%3C).*script.*(\&amp;gt;|%3E)&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{QUERY_STRING}&amp;quot; pattern=&amp;quot;GLOBALS(=|\[|\%[0-9A-Z]{0,2})&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{QUERY_STRING}&amp;quot; pattern=&amp;quot;_REQUEST(=|\[|\%[0-9A-Z]{0,2})&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
                    &amp;lt;action type=&amp;quot;Redirect&amp;quot; url=&amp;quot;index.php&amp;quot; appendQueryString=&amp;quot;false&amp;quot; redirectType=&amp;quot;SeeOther&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/rule&amp;gt;&lt;br /&gt;
                &amp;lt;rule name=&amp;quot;Joomla Search Rule&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;match url=&amp;quot;(.*)&amp;quot; ignoreCase=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;conditions logicalGrouping=&amp;quot;MatchAll&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{URL}&amp;quot; pattern=&amp;quot;^/search.php&amp;quot; ignoreCase=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
                    &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;/index.php?option=com_content&amp;amp;amp;view=article&amp;amp;amp;id=4&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/rule&amp;gt;&lt;br /&gt;
                &amp;lt;rule name=&amp;quot;Joomla Main Rewrite Rule&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;match url=&amp;quot;(.*)&amp;quot; ignoreCase=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;conditions logicalGrouping=&amp;quot;MatchAll&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsFile&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsDirectory&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;add input=&amp;quot;{URL}&amp;quot; pattern=&amp;quot;(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/conditions&amp;gt;&lt;br /&gt;
                    &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;index.php/&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/rule&amp;gt;&lt;br /&gt;
            &amp;lt;/rules&amp;gt;&lt;br /&gt;
        &amp;lt;/rewrite&amp;gt;&lt;br /&gt;
        &amp;lt;caching&amp;gt;&lt;br /&gt;
            &amp;lt;profiles&amp;gt;&lt;br /&gt;
                &amp;lt;add extension=&amp;quot;.php&amp;quot; policy=&amp;quot;DisableCache&amp;quot; kernelCachePolicy=&amp;quot;DisableCache&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/profiles&amp;gt;&lt;br /&gt;
        &amp;lt;/caching&amp;gt;&lt;br /&gt;
    &amp;lt;/system.webServer&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Helicon ISAPI Rewrite==&lt;br /&gt;
Helicon ISAPI Rewrite 3 located at http://www.helicontech.com/isapi_rewrite/ now provides near identical mod_rewrite functionality.&lt;br /&gt;
&lt;br /&gt;
IIS 7 has its own rewrite module now, the URL Rewrite which works excellent and doesn&#039;t require third party installs. It can be enabled &lt;br /&gt;
through the Web Platform Installer. In the Joomla config turn on both the SEF and Apache mod_rewrite, next create a rule under IIS URL Rewrite:&lt;br /&gt;
Pattern field: &#039;&#039;&#039;^([^/]+)/?$&#039;&#039;&#039;&lt;br /&gt;
Ignore case &#039;&#039;&#039;ON&#039;&#039;&#039;&lt;br /&gt;
Action type: &#039;&#039;&#039;Rewrite&#039;&#039;&#039;&lt;br /&gt;
Rewrite URL: &#039;&#039;&#039;index.php/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default rewrite rules can be used and the following code inserted to the top of the index.php file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (isset($_SERVER[&#039;HTTP_X_REWRITE_URL&#039;]))&lt;br /&gt;
{&lt;br /&gt;
    $_SERVER[&#039;REQUEST_URI&#039;] = $_SERVER[&#039;HTTP_X_REWRITE_URL&#039;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First job is to install ISAPI rewriter of your choice &lt;br /&gt;
http://www.isapirewrite.com/ or http://cheeso.members.winisp.net/IIRF.aspx&lt;br /&gt;
&lt;br /&gt;
ISAPI ReWrite has a lite version (limited) and IIRF (IonicIsapiRewriter) is freeware always updated and the source is free!&lt;br /&gt;
&lt;br /&gt;
Both are configured via file IsapiRewrite4.ini (you dont need to worry about .htaccess.txt ignore it). (if you are using IIRF IonicIsapiRewriter 2.x see below for a change in filename).&lt;br /&gt;
&lt;br /&gt;
The following entries for ISAPI REWRITE:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteLog  D:\temp\iirfLog.out&lt;br /&gt;
RewriteLogLevel 3&lt;br /&gt;
&lt;br /&gt;
IterationLimit 10&lt;br /&gt;
&lt;br /&gt;
# Joomla/Mambo rewrite rules&lt;br /&gt;
RewriteRule  ^/$                      /index.php&lt;br /&gt;
RewriteRule ^/content/blogsection/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=blogsection&amp;amp;id=$1&amp;amp;Itemid=$2&lt;br /&gt;
RewriteRule ^/content/blogcategory/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=blogcategory&amp;amp;id=$1&amp;amp;Itemid=$2&lt;br /&gt;
RewriteRule ^/content/section/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=section&amp;amp;id=$1&amp;amp;Itemid=$2&lt;br /&gt;
RewriteRule ^/component/option,([^/]+)/([^/]+),([^/]+)/([^/]+),([^/]+)/([^/]+),([^/]+) /index.php?option=$1&amp;amp;$2=$3&amp;amp;$4=$5&amp;amp;$6=$7&lt;br /&gt;
RewriteRule ^/component/option,([^/]+)/([^/]+),([^/]+)/([^/]+),([^/]+) /index.php?option=$1&amp;amp;$2=$3&amp;amp;$4=$5&lt;br /&gt;
RewriteRule ^/component/option,([^/]+)/([^/]+),([^/]+)/ /index.php?option=$1&amp;amp;$2=$3&lt;br /&gt;
RewriteRule ^/content/category/([^/]+)/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=category&amp;amp;sectionid=$1=&amp;amp;id=$2&amp;amp;Itemid=$3&lt;br /&gt;
RewriteRule ^/content/view/([^/]+)/([^/]+)/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=view&amp;amp;id=$1&amp;amp;Itemid=$2&amp;amp;limit=$3&amp;amp;limitstart=$4&lt;br /&gt;
RewriteRule ^/content/view/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=view&amp;amp;id=$1&amp;amp;Itemid=$2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is for IIRF IonicIsapiRewriter 1.x:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
IterationLimit 10&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remark: If you are using IIRF IonicIsapiRewriter Version 2.x you must have a &amp;quot;global&amp;quot; configuration file in the directory where the DLL is and a site specific file (see Artio JoomSEF below as example) in the Joomla root. The filename for 2.x is no longer IsapiRewrite4.ini but changed to Iirf.ini (!)&lt;br /&gt;
&lt;br /&gt;
Example for IirGlobal.ini:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteFilterPriority MEDIUM&lt;br /&gt;
StatusUrl /iirfStatus  RemoteOk&lt;br /&gt;
# Turn NotifyLog off if you can to optimize speed. If you need to log the original URL turn it on.&lt;br /&gt;
NotifyLog Off&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tested and working with ARTIO JoomSEF:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{HTTP_URL}             (/|\.htm|\.php|\.html|/[^.]*)$  [I] &lt;br /&gt;
RewriteCond %{REQUEST_FILENAME}     !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME}     !-d&lt;br /&gt;
RewriteRule (.*)                /index.php                      [U,L]&lt;br /&gt;
# only use the U of the [U,L] if you have turned &amp;quot;NotifyLog ON&amp;quot; specified in your IirGlobal.ini&lt;br /&gt;
MaxMatchCount 10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tested and working with default Joomla SEO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteRule ^/$                      /index.php&lt;br /&gt;
RewriteRule ^/content/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=$1&amp;amp;id=$2&amp;amp;Itemid=$3&amp;amp;limit=$4&amp;amp;limitstart=$5&lt;br /&gt;
RewriteRule ^/content/([^/]+)/([^/]+)/([^/]+)/ /index.php?option=com_content&amp;amp;task=$1&amp;amp;id=$2&amp;amp;Itemid=$3&lt;br /&gt;
RewriteRule ^/component/option,([^/]+)/([^/]+),([^/]+)/([^/]+),([^/]+)/([^/]+),([^/]+) /index.php?option=$1&amp;amp;$2=$3&amp;amp;$4=$5&amp;amp;$6=$7&lt;br /&gt;
RewriteRule ^/component/option,([^/]+)/([^/]+),([^/]+)/ /index.php?option=$1&amp;amp;$2=$3 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tested and working with sh404SEF:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteLogLevel 4 #Make it 0 in to turn debugging off&lt;br /&gt;
RewriteLog c:\IIRfLogfile.log #Write the absolute path of your file here &lt;br /&gt;
&lt;br /&gt;
MaxMatchCount 10&lt;br /&gt;
&lt;br /&gt;
# don&#039;t rewrite any request that goes to administrator&lt;br /&gt;
RewriteRule ^/administrator   -   [L]&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTP_URL} (/|\.htm|\.php|\.html|!administrator|/[^.]*)$  &lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteRule (.*) /index.php [U,L]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other Third party SEO should work once to follow there rewrite conditions/rules.&lt;br /&gt;
I run IonicIsapiRewriter-1.2.12b the betas are rock solid and I use it on my production servers with no issues.&lt;br /&gt;
Please follow vendors installation instructions to get the ISAPI filter working on your IIS server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:IIS]][[Category:Tips and tricks]][[Category:Tips and tricks 1.0]][[Category:Tips and tricks 1.5]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29420</id>
		<title>J1.5 talk:Triggering content plugins in your extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29420"/>
		<updated>2010-07-15T17:34:06Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem with PHP 5.3 when using this example: ==&lt;br /&gt;
 PHP Warning:  Parameter 2 to plgContent&amp;lt;MostPlugins&amp;gt;::onPrepareContent() expected to be a reference,&lt;br /&gt;
 value given in &amp;lt;whichever plugin cause that&amp;gt; on line &amp;lt;xx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of PHP 5.3.0, you will get a warning saying that &amp;quot;call-time pass-by-reference&amp;quot; is deprecated when you use &amp;amp; in foo(&amp;amp;$a);&lt;br /&gt;
See http://php.net/manual/en/language.references.pass.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Example.php in content shows (now wrongly and deprecated in PHP 5.3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $dispatcher-&amp;gt;trigger(&#039;onPrepareContent&#039;, array (&amp;amp; $item, &amp;amp; $item-&amp;gt;params, 0)); &lt;br /&gt;
        or could be: function onPrepareContent( &amp;amp;$article, &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039;$params, $limitstart );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SHOULD now be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $dispatcher-&amp;gt;trigger(&#039;onPrepareContent&#039;, array (&amp;amp; $item, $item-&amp;gt;params, 0)); &lt;br /&gt;
        or could be: function onPrepareContent( &amp;amp;$article, $params, $limitstart );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FIX:&#039;&#039;&#039;&lt;br /&gt;
-&amp;gt; Going into JOOMLA root and do a global replace through all PHP files will fix this issue.&lt;br /&gt;
&lt;br /&gt;
Furthermore (somewhat related) if you getting the following error: &lt;br /&gt;
 Warning: Missing argument 3 for plgContent&amp;lt;PluginName&amp;gt;::onPrepareContent() &lt;br /&gt;
 in JOOMLA\plugins\content\&amp;lt;PluginName.php&amp;gt; on line xx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
you may also want to change in file JOOMLA\modules\mod_customcontent\helper.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 line 36, change the array to: array (&amp;amp; $item, &amp;amp; $params, $limitstart ))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ref: joomlacode.org/gf/project/ianstools/tracker/?action=TrackerItemEdit&amp;amp;tracker_item_id=10578&lt;br /&gt;
&lt;br /&gt;
Not sure why this did not make the 1.5.15 ... 1.5.18 releases.&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Triggering_content_plugins_in_your_extension&amp;diff=29419</id>
		<title>J3.x:Triggering content plugins in your extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Triggering_content_plugins_in_your_extension&amp;diff=29419"/>
		<updated>2010-07-15T17:30:20Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
&lt;br /&gt;
Using the plugin system in your addon is fairly simple. The most important part is good planning because, to some degree, you&#039;re defining an interface for other people to use.&lt;br /&gt;
&lt;br /&gt;
To activate the plugins for your addon, you just have to use the following  code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger(&#039;onSomething&#039;, $params);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This function calls everyplugin that has registered itself for the event &#039;onSomething&#039; and hands over the array $param as parameter. &lt;br /&gt;
&lt;br /&gt;
As a return value you get an array of results from these plugins. All this is of course optional, you could also use the system without parameters and/or a result.&lt;br /&gt;
&lt;br /&gt;
You can also pass arguments by reference to allow plugins to edit the passed data. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
$dispatcher-&amp;gt;trigger(&#039;onSomething&#039;, &amp;amp;$params);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A common usage might be to use the content plugins if you have an editable field. This is the code that will do that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
        $item-&amp;gt;text = &amp;amp; your_text_area_item;  &lt;br /&gt;
        $item-&amp;gt;params = clone($params);&lt;br /&gt;
        JPluginHelper::importPlugin(&#039;content&#039;); &lt;br /&gt;
        $dispatcher-&amp;gt;trigger(&#039;onPrepareContent&#039;, array (&amp;amp; $item, &amp;amp; $item-&amp;gt;params, 0)); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to look at core components (for example com_content) for an example.&lt;br /&gt;
&lt;br /&gt;
Also for PHP5.3 compliance please look at the discussion page.&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Triggering_content_plugins_in_your_extension&amp;diff=29418</id>
		<title>J3.x:Triggering content plugins in your extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Triggering_content_plugins_in_your_extension&amp;diff=29418"/>
		<updated>2010-07-15T17:29:52Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
&lt;br /&gt;
Using the plugin system in your addon is fairly simple. The most important part is good planning because, to some degree, you&#039;re defining an interface for other people to use.&lt;br /&gt;
&lt;br /&gt;
To activate the plugins for your addon, you just have to use the following  code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
$results = $dispatcher-&amp;gt;trigger(&#039;onSomething&#039;, $params);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This function calls everyplugin that has registered itself for the event &#039;onSomething&#039; and hands over the array $param as parameter. &lt;br /&gt;
&lt;br /&gt;
As a return value you get an array of results from these plugins. All this is of course optional, you could also use the system without parameters and/or a result.&lt;br /&gt;
&lt;br /&gt;
You can also pass arguments by reference to allow plugins to edit the passed data. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
$dispatcher-&amp;gt;trigger(&#039;onSomething&#039;, &amp;amp;$params);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A common usage might be to use the content plugins if you have an editable field. This is the code that will do that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $dispatcher =&amp;amp; JDispatcher::getInstance();&lt;br /&gt;
        $item-&amp;gt;text = &amp;amp; your_text_area_item;  &lt;br /&gt;
        $item-&amp;gt;params = clone($params);&lt;br /&gt;
        JPluginHelper::importPlugin(&#039;content&#039;); &lt;br /&gt;
        $dispatcher-&amp;gt;trigger(&#039;onPrepareContent&#039;, array (&amp;amp; $item, &amp;amp; $item-&amp;gt;params, 0)); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to look at core components (for example com_content) for an example.&lt;br /&gt;
Also for PHP5.3 compliance please look at the discussion page.&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29417</id>
		<title>J1.5 talk:Triggering content plugins in your extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29417"/>
		<updated>2010-07-15T17:27:44Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem with PHP 5.3 when using this example: ==&lt;br /&gt;
 PHP Warning:  Parameter 2 to plgContent&amp;lt;MostPlugins&amp;gt;::onPrepareContent() expected to be a reference,&lt;br /&gt;
 value given in &amp;lt;whichever plugin cause that&amp;gt; on line &amp;lt;xx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of PHP 5.3.0, you will get a warning saying that &amp;quot;call-time pass-by-reference&amp;quot; is deprecated when you use &amp;amp; in foo(&amp;amp;$a);&lt;br /&gt;
See http://php.net/manual/en/language.references.pass.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Example.php in content shows (now wrongly and deprecated in PHP 5.3):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;function onPrepareContent( &amp;amp;$article, &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039;$params, $limitstart )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
but it SHOULD be:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;function onPrepareContent( &amp;amp;$article, $params, $limitstart )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FIX:&#039;&#039;&#039;&lt;br /&gt;
-&amp;gt; Going into JOOMLA root and do a global replace through all PHP files will fix this issue.&lt;br /&gt;
&lt;br /&gt;
Furthermore (somewhat related) if you getting the following error: &lt;br /&gt;
 Warning: Missing argument 3 for plgContent&amp;lt;PluginName&amp;gt;::onPrepareContent() &lt;br /&gt;
 in JOOMLA\plugins\content\&amp;lt;PluginName.php&amp;gt; on line xx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
you may also want to change in file JOOMLA\modules\mod_customcontent\helper.php:&lt;br /&gt;
 line 36, change the array to: array (&amp;amp; $item, &amp;amp; $params, $limitstart ))&lt;br /&gt;
&lt;br /&gt;
Ref: joomlacode.org/gf/project/ianstools/tracker/?action=TrackerItemEdit&amp;amp;tracker_item_id=10578&lt;br /&gt;
&lt;br /&gt;
Not sure why this did not make the 1.5.15 ... 1.5.18 releases.&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29416</id>
		<title>J1.5 talk:Triggering content plugins in your extension</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J1.5_talk:Triggering_content_plugins_in_your_extension&amp;diff=29416"/>
		<updated>2010-07-15T17:13:40Z</updated>

		<summary type="html">&lt;p&gt;Petergeier: onPrepareContent() example problem: &amp;quot;call-time pass-by-reference&amp;quot; is deprecated for second parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem with PHP 5.3 when using this example: ==&lt;br /&gt;
 PHP Warning:  Parameter 2 to plgContent&amp;lt;MostPlugins&amp;gt;::onPrepareContent() expected to be a reference,&lt;br /&gt;
 value given in &amp;lt;whichever plugin cause that&amp;gt; on line &amp;lt;xx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of PHP 5.3.0, you will get a warning saying that &amp;quot;call-time pass-by-reference&amp;quot; is deprecated when you use &amp;amp; in foo(&amp;amp;$a);&lt;br /&gt;
See http://php.net/manual/en/language.references.pass.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Example.php in content shows (now wrongly and deprecated in PHP 5.3):&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;function onPrepareContent( &amp;amp;$article, &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039;$params, $limitstart )&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
but it SHOULD be:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;function onPrepareContent( &amp;amp;$article, $params, $limitstart )&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FIX:&#039;&#039;&#039;&lt;br /&gt;
-&amp;gt; Going into JOOMLA root and do a global replace through all PHP files will fix this issue.&lt;br /&gt;
&lt;br /&gt;
Furthermore (somewhat related) if you getting the following error: &lt;br /&gt;
 Warning: Missing argument 3 for plgContent&amp;lt;PluginName&amp;gt;::onPrepareContent() &lt;br /&gt;
 in JOOMLA\plugins\content\&amp;lt;PluginName.php&amp;gt; on line xx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
you may also want to change in file JOOMLA\modules\mod_customcontent\helper.php:&lt;br /&gt;
 line 36, change the array to: array (&amp;amp; $item, &amp;amp; $params, $limitstart ))&lt;br /&gt;
&lt;br /&gt;
 Ref: joomlacode.org/gf/project/ianstools/tracker/?action=TrackerItemEdit&amp;amp;tracker_item_id=10578&lt;br /&gt;
&lt;br /&gt;
Not sure why this did not make the 1.5.15 ... 1.5.18 releases.&lt;/div&gt;</summary>
		<author><name>Petergeier</name></author>
	</entry>
</feed>