If you are new to IP.Board development, you are likely to be curious about some of the terminology utilized throughout this website and our software. Fear not - you'll find that many of the terms we use are common across web development as a whole, and/or within the forum software industry specifically.
Firstly, within the IP.Board framework, each module or component is referred to as an application. IP.Board includes a core/system application (that supports certain core functionality, such as registration and logging in), a members application (where user profiles and the member list are found), and the forums application. Other available applications from Invision Power Services, Inc. include a calendar (free with your IP.Board license), a gallery, a blog, a download manager, a CMS, an e-commerce system, and a chat system. Third party developers are able to create applications that run on the same 'level' as first party applications, providing a seamless experience for end users and administrators whether the application is developed by us, or by you. Applications contain modules, which are groups of actions, and sections, which are actions themselves. How you group actions and how many actions your application contains are entirely up to you. When developing custom applications, you have complete control over these decisions.
In addition to applications, modules and sections, developers can create what are known as hooks within the IP.Board framework. Hooks allow developers to alter the functionality and/or output of the software without modifying the actual PHP source code used by the software. Hooks are easily installed by importing an XML file in the admin control panel, and can just as easily be uninstalled if the administrator so chooses. IP.Board supports many different types of hooks:
- Action Overloaders: This type of hook allows you to extend any section class (via typical class extension in PHP) in IP.Board, giving you the ability to override the methods in those sections.
- Skin Overloaders: Similar to action overloaders, skin overloaders allow you to extend any skin class (via typical class extension in PHP) in IP.Board, giving you the ability to override the skin methods in the overloaded skin file.
- Library Hooks: This type of hook allows you to extend almost any other library in IP.Board (via typical class extension in PHP), giving you the ability to override the methods in that library.
- Data Hooks: Data hooks give you the opportunity to modify certain pre-defined data sets (typically arrays, but not always) before IP.Board does something else with that data. For instance, there are data hook points before and after a new post is inserted into the database, giving you the opportunity to inspect that data and manipulate it before it is inserted, or take some other action following insertion.
- Template Hooks: Finally, template hooks are defined points throughout all skin files in IP.Board where you can execute your own PHP code, typically to inject some code into the output or to alter the expected output. For instance, if you wished to show a banner at a certain point on the page you could use a template hook around that area of the page to inject your HTML into the output. Template hooks are the most common type of hook.
There are a few other terms you may see floating around outlined here:
- HTML Logic: IP.Board utilizes an advanced templating system to facilitate separation of backend code logic and front end interface or display. Within skins in our template system, certain code tags that we call HTML Logic are utilized to tell the template system to insert specific PHP code. If statements, else statements, foreach loops and raw PHP code blocks can all be inserted directly into skins by using HTML Logic.
- Blocks: IP.Content, our powerful content management solution, allows administrators to create 'blocks' which can then be injected into the output using "parse tags".
- Parse Tags: Parse Tags are simply variables utilized by our template system to transform one set of data into something else. Common parse tags are the url tag, which translates dynamic URLs into friendly URLs, and the date tag, which translates unix timestamps into human-readable dates.
- IPS/IPB: IPS stands for Invision Power Services, Inc. (the creators of IP.Board), and IPB is shorthand for IP.Board.
- CCS: While not used very often anymore, CCS stands for Community Content System, the original name given to IP.Content. "ccs" remains the application key for IP.Content to this day.
Whether you're just getting started or you're a seasoned developer, you'll find some of the following links useful:
- Developer Documentation
- PHP Doc Export (export created by doxygen)
- Marketplace. Submit paid and free resources to the community.
- Marketplace Guidelines
- Community Submitted Articles
- Submit a Resources Blog Entry. We allow resource developers to submit blog entries to our official resources blog. All submissions must be approved before they become visible, and abuse of this system may lead to moderation restrictions imposed upon your account.
- Manage Paid Files. You can manage your paid files in our marketplace from here.
- Custom Services Directory. If you provide custom services, submit your entry here so that users of our community can easily find your listing to get in touch with you.
- Bug Tracker. If you discover a bug in IP.Board or any of our addon applications, be sure to let us know.
IPS hosts a marketplace for our community to make use of. Clients may submit resources to our marketplace, both free and paid, so long as they follow the guidelines. You must provide technical support for your submissions or they will be removed. The guidelines outline what you must do when submitting resources, how payouts work if you submit paid resources, and other important details - be sure to read them before uploading any contributions. We encourage third party developers to make use of the powerful IP.Board framework to create useful new addons for the software and to share these additions with the community.
Extending or Adding Functionality
If you are looking to extend the functionality of IP.Board or its applications, then the following guides will be useful:
Understanding Application Creation
This guide will show you how to create your own application, including information that will take you through the required and optional steps for creating an application.
IP.Board has the ability to handle triggered events for a few key member actions. This allows for IP.Board to take certain actions when member accounts are modified. Each application can maintain its own memberSync.php file.
Editors, BBCode and HTML
IP.Board makes it easy to parse and unparse submitted bbcode, allowing you to provide a consistent experience across the site, even in custom applications.
Handling AJAX Requests
Learn how to use built in APIs to send PMs, emails and more.
More on Applications...
Learn how to use built in methods in your own applications, such as member configuration, location capabilities, item marking, RSS and more.
SSO and Login Integration
If you are looking to share log in authentication with your IP.Board, or use your own authentication source:
Managing Log In Modules
This article outlines how to utilize log in modules from an end user administrator perspective.
Creating a Log In Module
If you want your IP.Board to use an existing database to authenticate users, please read this guide.
Utilizing IPS Connect to link applications
IPS Connect is a login framework that allows you to link two or more IP.Board 3.4+ installations, allowing them to share login credentials between them. This framework utilizes a master/slave relationship approach, and plugins can be developed for third party applications to allow them to be either masters or slaves within the framework. IPS Connect natively supports SSO for applications on the same domain.
IP.Board provides out of the box for SSO plugin files, allowing you to implement single sign-on easily with IP.Board.
IPSMember Class: Creating, Loading and Saving Members
Learn how to use the built in IPSMember class to manage members in IP.board
Passwords in IP.Board
Learn how IP.Board stores password hashes
Reusing IP.Board APIs Externally
Check out this very simple example which explains how to verify if a user viewing a page on your website is logged in to IP.Board. Using the basic principle in this article can allow you to implement login and member recognition in your external website pages.
General guides and tips when developing with the IP.Board framework
Learn useful debugging methods such as writing debug log files and more
Enabling Developer Mode
This guide teaches you how to enable "Developer mode" to add functionality while developing.
Editing HTML and CSS Outside the ACP
Learn how to quickly develop skins and templates in your own text editor
Source code-level documentation of IP.Board and our other first-party applications.