User Tools

Site Tools


plugins:hooks_filters

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
plugins:hooks_filters [2015/01/12 15:49]
shawn_a [Core Filters]
plugins:hooks_filters [2017/01/19 16:07]
lokothodida [Creating and Using Plugin Hooks]
Line 10: Line 10:
 |content ​       |filters page content data                              | string ​       |         | |content ​       |filters page content data                              | string ​       |         |
 |menuitems ​     |filters the menu html returned in ''​get_navigation()''​ | string ​       |         | |menuitems ​     |filters the menu html returned in ''​get_navigation()''​ | string ​       |         |
-|**pagecache** ​ |filters ​''​$pagesarray''​ data before saving ​            ​array         | 3.3+    |+|**pagecache** ​ |filters ​the page cache xml object ​before saving ​       simplexmlobj  ​| 3.3+    |
 |**sitemap** ​   |filters the ''​$sitemap''​ xmlobj before saving ​         | simplexmlobj ​ | 3.3+    | |**sitemap** ​   |filters the ''​$sitemap''​ xmlobj before saving ​         | simplexmlobj ​ | 3.3+    |
 |**indexid** ​   |filters global page ''​$id'' ​                           | string ​       | 3.3+    | |**indexid** ​   |filters global page ''​$id'' ​                           | string ​       | 3.3+    |
Line 101: Line 101:
 | theme-sidebar ​   | Sidebar item on Theme Page    |         | | theme-sidebar ​   | Sidebar item on Theme Page    |         |
 | nav-tab ​         | Insert navigation bar tab     ​| ​        | | nav-tab ​         | Insert navigation bar tab     ​| ​        |
 +
 +===== Creating and Using Plugin Hooks/​Filters =====
 +
 +Similar to core hooks and filters, plugins can create their own by using the functions ''​exec_action''​ and ''​exec_filter''​. ​
 +
 +<​code>​
 +exec_action( $hook_name );
 +</​code>​
 +
 +<​code>​
 +exec_filter( $filter_name,​ $value );
 +</​code>​
 +
 +If your plugin uses a GS hook to alter content before it is saved (e.g, the [[http://​get-simple.info/​extend/​plugin/​multi-user/​133/​|MultiUser plugin]] changes the output to the ''​user.xml''​ file and makes all changes from other plugins in this hook undone), it is especially important to add a custom hook, so that other plugin developers can make their plugins compatible with yours if they need to alter the data too. 
 +
 +If you created a plugin hook called '​your-plugin-hook',​ as described in the paragraph above, other plugin developers could then:
 +
 +  - (1) detect whether your plugin is active by using ''​pluginIsActive('​your-plugin-name'​)''​ (GS 3.3.4+) or by checking for existence of your init function/a constant you defined, and
 +  - (2) use your hook with ''​add_action('​your-plugin-hook',​ '​their-function'​)''​.
 +
 +This is an important step to take in making multiple plugins from different authors compatible with one another.
 +
 +When naming hooks in your plugins //be sure to use a unique name// to not step on core hook ids.
plugins/hooks_filters.txt ยท Last modified: 2017/01/19 16:10 by lokothodida