SlideShare a Scribd company logo
Best Practices for Elgg Plugin
        Developers

             Cash Costello
        ElggCamp San Francisco
Best Practices for Elgg Plugin
        Developers

             Cash Costello
        ElggCamp San Francisco
About Me
Elgg core developer
Author of Elgg Social Networking 1.8
Employed by Johns Hopkins University Applied
 Physics Laboratory (JHU/APL)
R&D in machine learning
Driving force behind JHU/APL's collaborative
 platform built on Elgg
1. Namespace your functions, classes, actions,
          views, CSS, JavaScript
2. Make dependencies between plugins explicit


 Plugin manifest, function_exists(), elgg_is_active_plugin()
3. Create a site customization plugin as a catch all
              for small modifications

   Maintain a readme with list of customizations!
4. Keep your plugin's start.php trim


elgg_register_library(), elgg_load_library(), class with static
  methods
5. Use inheritance with Elgg's data model


Remember to unregister your class when your plugin is disabled
 using the deactivate.php script with update_subtype()
6. Document what metadata is used with your
                 entities

@property in documentation of class or use getter/setter methods
7. Avoid using many metadata key-value pairs
           with elgg_get_entities*()
8. Use Elgg's functions and classes when
     interacting with the data model
9. Be aware that setting metadata on an entity
        clears Elgg's database cache
10. Use relationships to connect entities


Not metadata!
11. Do not create large views
12. Create views that correspond to visual
                 elements

Also look for common elements that can be reused
13. Use the core views and CSS classes
           whenever possible
14. Learn the principles behind Elgg's new HTML/
                       CSS

  Example: CSS selectors should not cross element boundaries
15. Test with non-admin user and while logged
                     out

More Related Content

'Best Practices for Elgg Plugin Developers' Cash Costello #ECSF

  • 1. Best Practices for Elgg Plugin Developers Cash Costello ElggCamp San Francisco
  • 2. Best Practices for Elgg Plugin Developers Cash Costello ElggCamp San Francisco
  • 3. About Me Elgg core developer Author of Elgg Social Networking 1.8 Employed by Johns Hopkins University Applied Physics Laboratory (JHU/APL) R&D in machine learning Driving force behind JHU/APL's collaborative platform built on Elgg
  • 4. 1. Namespace your functions, classes, actions, views, CSS, JavaScript
  • 5. 2. Make dependencies between plugins explicit Plugin manifest, function_exists(), elgg_is_active_plugin()
  • 6. 3. Create a site customization plugin as a catch all for small modifications Maintain a readme with list of customizations!
  • 7. 4. Keep your plugin's start.php trim elgg_register_library(), elgg_load_library(), class with static methods
  • 8. 5. Use inheritance with Elgg's data model Remember to unregister your class when your plugin is disabled using the deactivate.php script with update_subtype()
  • 9. 6. Document what metadata is used with your entities @property in documentation of class or use getter/setter methods
  • 10. 7. Avoid using many metadata key-value pairs with elgg_get_entities*()
  • 11. 8. Use Elgg's functions and classes when interacting with the data model
  • 12. 9. Be aware that setting metadata on an entity clears Elgg's database cache
  • 13. 10. Use relationships to connect entities Not metadata!
  • 14. 11. Do not create large views
  • 15. 12. Create views that correspond to visual elements Also look for common elements that can be reused
  • 16. 13. Use the core views and CSS classes whenever possible
  • 17. 14. Learn the principles behind Elgg's new HTML/ CSS Example: CSS selectors should not cross element boundaries
  • 18. 15. Test with non-admin user and while logged out