III. Using NBBC

[ Previous: B. How a Typical NBBC Program Works | Next: D. Adding Your Own Smileys ]

C. Adding Your Own Tags

Let's say you want to add a BBCode tag that doesn't exist, say, how about, a [mono] for displaying things as monospace text? Let's look at how you'd go about adding a simple additional tag.

To add a tag, which NBBC calls a "rule," since it's really a rule for describing how a given chunk of input is processed, you simply call the AddRule method of the $bbcode object and pass to it an array describing how the new rule will convert its input to HTML. Here's an example for our [mono] tag:

Code:
<?php require_once("nbbc.php"); $bbcode = new BBCode; ... $new_rule = Array( 'simple_start' => '<tt>', 'simple_end' => '</tt>', 'class' => 'inline', 'allow_in' => Array('listitem', 'block', 'columns', 'inline', 'link'), ); $bbcode->AddRule('mono', $new_rule); ... $input = "This text is [mono]monospaced![/mono]"; $output = $bbcode->Parse($input); print $output; ?>
Output:
This text is monospaced!

Each new rule is described by an array of parameters. There are a large number of different parameters you can use, but for now, let's look at just the four parameters shown in this example. (You can learn about the rest of the parameters in the appendix on BBCode rule parameters.)

The four parameters given here are:

  • simple_start: This describes some HTML to be added in place of the starting [mono] tag. In this case, we're going to replace it with the <tt> HTML element.

  • simple_end: This describes some HTML to be added in place of the ending [/mono] tag. In this case, we're going to replace it with the </tt> HTML element terminator.

  • class: This assigns this new rule and its contents to be of a certain "class" of data within the document. Classes control which tags are allowed to go inside which other tags, and ensure that the resulting HTML is legal and valid. The standard classes are: block, inline, list, listitem, link, columns, nextcol, code, and image. (See the appendix on content classes for more details.) In this case, our new tag will be of class inline; inline is used to describe a chunk of text in a paragraph. Most tags that change the appearance of text, like [b] and [i] and [font], are of class inline also.

  • allow_in: This is a list of which tag classes this new tag may be used inside. It can be safely used inside list items, like [*], inside block items like [center], and inside other inline items, like [b]. For a complete list of the tag classes and how they relate to each other, see the appendix on content classes.

Adding the new rule is very straightforward once the rule is defined; you just call BBCode::AddRule and pass it the name of the new rule and the array containing its parameters. Advanced users may prefer to write it like this instead, though, because it's actually a little faster and doesn't pollute the namespace with an unnecessary $new_rule variable that you'll never use again:

Code:
$bbcode->AddRule('mono', Array( 'simple_start' => '<tt>', 'simple_end' => '</tt>', 'class' => 'inline', 'allow_in' => Array('listitem', 'block', 'columns', 'inline', 'link'), ));

[ Previous: B. How a Typical NBBC Program Works | Next: D. Adding Your Own Smileys ]


Copyright © 2010, the Phantom Inker. All rights reserved.