Group icon
A group for those interested in plugin development

Pages home > Plugin development

Plugin development

Plugins provide ways of adding functionality to Elgg. This can be as little as a WYSIWYG text editor, or as much as a full feature like a blog or a photo gallery.

Core requirements

Every Elgg plugin sits in a subdirectory of the /mod folder and contains a PHP script called start.php. The name of your subdirectory is your plugin name, so choose carefully! It should be unique but readable, so that site administrators don't accidentally overwrite it with another plugin, but they can also understand at a glance what your plugin does.

Plugin views

Your plugin may have a set of views (see the views reference for plugin-specific information). These may overwrite or extend existing system views.

Languages

If you're outputting any system (as opposed to user-entered) text to the screen, we strongly recommend internationalizing using the built-in internationalization functions. See the plugin reference here.

start.php

The start.php file is the control hub of any plugin.

Initialisation

We recommend that your create a yourplugin_init function, responsible for setting up page handling, submenu items and so on during Elgg's init event. (Read more about events here.) You can do this by declaring:

register_elgg_event_handler('init','system','yourplugin_init');

Within this you can add calls to define the overall behaviour of your plugin.

Common tasks

Other topics

, , , , ,

Last updated 468 days ago by Dave

Plugin development is very strong here on elgg.org.  Many talented developers put great detail into thier individual plugins, this is great for elgg.  However, I wished to call attention to this page for a special reason.

Many developers state in their documentation "plugin must be located at the bottom" of the plugin list.  This can not be, not every plugin can reserve the bottom as it's special place in the plugin structure.  I would like to urge every developer to test at the very least; top, middle, and bottom.  This will help ensure a more seamless plugin intergration into individual elgg site structures.

Thank you

Jessica

gone 216 days ago

hmmm ;-)

If PlugIn P will extend or override PlugIn A
THEN
PlugIn P MUST be placed below A
in order to work properly

If PlugIns are not related in this manner.. then the order is inconsequential..

Also..

If you install two different PlugIns that intend to extend / override the same Elgg functionality...
you've got a small problem ;-(

And..
we've seen many, many PlugIn conflicts shredding a site ;-(

( One of these days.. I will code my Plugin Conflict Analyzer - lot of logic to code to do this ;-)

DhrupDeScoop 216 days ago

Exactly, this would be maybe something for future elgg releases as part of the release package.  Not all end users are developers or have the means to track such errors.  An infant must crawl before it can walk.  I have no doubt that a Conflict Analyzer will be a future must.  We can't all be PlugIn P.

gone 216 days ago

How to integrate wordpress users with elgg, so that my existing users on my wordpress site can login with my blog's url.

 

Please Help

navi 47 days ago

Hi,

My OOP are not strong so bear with me please.

From inside a custom widget I'm developing, how can I get information about who belongs to my group?  Whats the basic syntax I need to use to get information about my environment?

Also, is there a way to add a data field to a group member's data block.

Thanks

MontanaMike 9 days ago