Vanilla 1 Documentation Archive

Table of Contents

Vanilla Extensions

What is a Extension?

An extension allows you to change existing functionality, and add brand new functionality into Vanilla. Extensions can come from a variety of sources, but we’ve created a Vanilla Add-on Directory that you are welcome to browse and add to.

Creating a new Extension

How do I create a new Extension?

You can start with the Getting Started page, that will take you through:

Those pages may also help you:

Some More Guidelines from the community

see the corresponding forum discussion

Directory Structure

The archive should contain the folder (yes, the folder itself) which holds the extension files, its contents, and nothing more or less. please check the contents of your archive before you upload it.

OS Specific Files

Extraneous files in the archive like .DS_STORE, __macos or Thumbs.db should be removed.

Name and Version Matching


Installation and Upgrade instructions should be provided.

Useless Load

Your extension should be careful about the page where they act: processing, loading styles (.css) or scripts (.js), database accesses on each page needlessly is bad. Something like:

$ProcessedPages = array( 'index.php', 'search.php', 'comments.php' );
if ( in_array( $Context->SelfUrl, $ProcessedPages ) )


If your extension includes other files, particularly if it uses the Vanilla configuration settings to determine the path, you must have this line at the top of your extension:

// Make sure this file was not accessed directly and prevent register_globals configuration array attack
if (!defined('IN_VANILLA')) exit();

Configuration useability

In order to keep the custom extension settings and the core Vanilla settings distinct, it’s a good idea to make your extension configuration link in a separate menu list instead of just adding to the default options list.


$ExtensionOptions = $Context->GetDefinition('Extension Options');
	GetUrl($Context->Configuration, 'settings.php', '', '', '', '', 'PostBackAction=YourExtensionName'));

Note that for English, you don’t have to define this entry, since the key is used for the definition if no language entry is found. Note that for best compatibility, tt would be best for other languages to translate using this key, both with and without a space.

Sharing your new Extension

You can upload your new extension to Lussumo so that other people can use it. Do so by following the Add-on Guidelines to prepare your Extension for being added to the Add-on Management application.

Wanted Extensions

Please feel free to list a selection of “wanted” extensions, this will give developers a better scope of what users want instead of checking the Vanilla Community every time and possibly missing someones certain thread. If someone wants to work on an extension then list your name.

Extension Description Development Begun By
Role Icons The ability to add an icon or a symbol to a Role which will show up on peoples account page, on discussion and comments pages, basically anywhere their name is listed. Sort of deviantART style where they have icons for certain groups, for instance the admins have a “$” whilst normal members have “~” and so on. (May want to look into Dojo Role colors and customize the stylesheet) Nobody
Response Notification An extension that will notify a user when someone posts to a thread where he has posted before (i.e. “responds”) (May want to try Notify) Minisweeper
Email Notification An extension that will notify all users of the community when a new discussion is started. (May want to try Notify) Slayeh
Mark as Read Will allow for the user to mark certain posts as read - either individually, all the posts in a certain category, or all the posts on the board. (MarkAllRead performs some of this functionality) Nobody
Category Sticky Be able to post stickies that only appear in their relevant category and not on the main discussions page. Nobody
Block Discussion Block a discussion from appearing on the discussions page, similar to blocking a category. Nobody
“Create Discussion” Bookmarklet A bookmarklet which when clicked will begin a discussion for a webpage that the browser was on and/or check if it was already created then redirect to that one squirrel
Nested Comments Addition of Nested comments option Nobody
E mail of messages Either receipt of individual e mails or a digest the day’s forum posts. Issue of reminding people the forum is there, & encouraging user participation. (Happens on >1 forum, diehard e mail users out there!) Nobody

Completed Extensions

Extension Description
raineymAcronyms(Discussion) An extension that will crawl through posts and assign <acronym title=”Whatever”> to specific matching words like CSS or XHTML or PHP etc. Much like this Wiki does.
MaryTime Restrictor(Discussion) An extension whereby when enabled all editing/posting to the forum is de-activated. No modifying or updating of the database. Includes a block on profile editing. Editing/creating/replying to discussions. Possible a small banner at the top of the forum to suggest that forum is in “read-only” mode for x amount of time.
Forum StatisticsVanillaZillaShortStatGoogle Analytics(Discussion) Possibly a separate page/section which would list stats about the forum. Total discussions, total comments, total members, newest member, comments per day/month etc. Posts per minute and so on. Maybe even graphs or stats showing info on a month by month basis etc.
Participated Threads(Discussion) Allows the user to view the threads they’ve participated in.
Dojo EditorFCKeditor(Discussion) To help users format their posts without learning html
QuotationsFCKAjaxQuoteAjaxQuote(Discussion) Allow user to quote a previous post when replying in a thread.
Guest Post An extension that allow anyone visiting the forum add a comment without pre-sign up
Category Roles(Discussion) Set a category so that it can only be posted in by certain roles
Several listed Allows users to upload images of specified size, type, etc. to be viewed in their post.

vanilla/extensions.txt · Last modified: 2009/03/28 14:10
Vanilla 1 Documentation archive (Wiki by DokuWiki)