Category:Package SDK

This software development kit, for package and mod developers, is here to help people quickly begin to create packages and modifications for SMF.

Download the entire SDK from the community forum

Before reading on, you should know some definitions used in this documentation:


 * element aka tag: an instruction used to tell the package manager what to do. ie
 * attribute aka property: an additional value used to describe an element
 * inline: code or text that is written in this file instead of coming from an outside source
 * file: the name or location of a file to be used instead of "inline"
 * location aka path: the location on the computer of a directory and/or file

There are also variables that may be used in place of a path.
 * $sourcedir: The directory where the source files are contained (ie Post.php, Admin.php, etc)
 * $boarddir: The directory where index.php is found. Usually one level beneath the source files are contained.
 * $avatardir: The directory where the avatars may be found
 * $themedir: The directory where the directories of the themes are located
 * $imagesdir: The directory of the images for each theme
 * $languagedir: The location of the directories of language files
 * $smileysdir: The location of the smiley directory

package-info.xml
All elements, unless otherwise stated, are not optional and contain no attributes.


 * 
 * Must encompass all other elements in the file.
 * Attributes:
 * xmlns: defaults to "http://www.simplemachines.org/xml/package-info"; optional


 * 
 * Contains the id of the package. Should be in the format of [username]:[package name]. For instance [i]sleepy:LeetMod[/i] When submitting a mod to the mod site, the username should be your username from www.simplemachines.org


 * Contains the name of the package.
 * Contains the name of the package.


 * The type of package - "avatar", "language", or "modification".
 * The type of package - "avatar", "language", or "modification".


 * The package's current version.
 * The package's current version.


 *  ,   , and   
 * Actions taken on installation. The elements and their attributes are the same for the install, upgrade, and uninstall elements.
 * Attributes:
 * for: What versions to install/upgrade/uninstall for. Comma delimited string with ranges such as "1.0-1.5,2.0"; optional
 * from: Upgrade Only; What mod versions they are upgrading from. Comma delimited string with ranges such as "1.0-1.5,2.0"; optional[/list]
 * Elements:
 *   or   (for use with type="file" only)
 * Filename of the readme file
 * Optional: Yes
 * Attributes:
 * lang: which language this readme applies to; optional
 * parsebbc: whether or not to parse bbcode in the readme; optional; defaults to false
 * type: "inline" or "file"; defaults to "file"; optional
 * &lt;code>&lt;/code> or &lt;code /> (for use with type="file" only)
 * Filename of a php file to be executed.
 * Deprecated use in SMF 2.0, please use in SMF 2.0 or higher
 * Optional: Yes
 * Attributes:
 * type: "inline" or "file"; defaults to "file"; optional
 *   or   (for use with type="file" only)
 * Filename of a database code to be executed.
 * Only exists in SMF 2.0 or higher
 * Optional: Yes
 * Attributes:
 * type: "inline" or "file"; defaults to "file"; optional
 *   or   (for use with type="file" only)
 * Instructions to take for a modification.
 * Optional: Yes
 * Attributes:
 * type: if "inline", you may use the, , , and elements listed in the modification.xml documentation."inline" or "file"; defaults to "file"; optional
 * reverse: reverse the instructions; "true" or "false"; defaults to "false"; optional
 * format: this documentation only covers xml formatted modifications and it is recommended that you use this format; "xml" or "boardmod"; defaults to "xml"; optional
 * 
 * Create a new directory.
 * Optional: Yes
 * Attributes:
 * name: the name of the directory
 * destination: the path of the directory where you want to create this new directory
 * 
 * Create a blank file.
 * Optional: Yes
 * Attributes:
 * name: the name of the file
 * destination: the path of the directory where you want to create this new file
 * 
 * Require a directory and all files in it from inside the package.
 * Optional: Yes
 * Attributes:
 * from: the path to the directory
 * name: the name of the directory
 * destination: the path of where you want to put this directory
 * 
 * Require a file from inside the package.
 * Optional: Yes
 * Attributes:
 * from: the path to the file
 * name: the name of the file
 * destination: the path of where you want to put this file
 * 
 * Move an entire directory. May also be used to rename a directory by moving it to it's parent directory with a different name.
 * Optional: Yes
 * Attributes:
 * from: the path of the directory you want to move
 * name: the name of the directory
 * destination: the path to where you want to put the directory
 * 
 * Move a file. May also be used to rename a file by moving it to it's parent directory with a different name.
 * Optional: Yes
 * Attributes:
 * from: the path of the file you want to move
 * name: the name of the file
 * destination: the path to where you want to put the file
 * 
 * Remove a directory and all files in it.
 * Optional: Yes
 * Attributes:
 * name: the name and path of the directory to be removed
 * 
 * Remove a file.
 * Optional: Yes
 * Attributes:
 * name: the name and path of the file to be removed
 *   or  
 * Redirect after install/upgrade/uninstall.
 * Optional: Yes
 * Attributes:
 * url: the url to redirect to; Required. "$boardurl", "$scripturl", and "$session_id" are accepted.
 * type: inline or file. Whether to use a file or inline text for redirect text.
 * timeout: Time until the redirect occurs. Default: 5 seconds