User Tools

Site Tools


de:doc:plugins:bbcode:tips

Tipps für das BBCode Plugin

Wie man eigene Tags definiert

Beim Einfügen von neuen bbcode-Tags ist es wichtig, die Änderungen nicht im Core-Plugin zu machen; dieses wird beim nächsten Update höchstwahrscheinlich überschrieben und die Änderungen wären verloren.

Aber man kann ein neues Plugin mit eigenen Tags bauen, indem man an das bestehende Plugin anbaut.

Mehr Infos über die in Flatpress verwendete bbcode-Klasse gibt es in der offiziellen Dokumentation.

Das Nachfolgende Beispiel zeigt, den Code für ein Akronym-Tag baut, welches das Kürzel als Attribut erwartet und die Erklärung als Inhalt des Tags1): [acronym=CSS]Cascading Style Sheet[/acronym] Auf deiner Webseite sieht das dann so aus: CSS.

custombbcode.php
----------------------
<?php
 
// this will tell FlatPress to load the new tags at the very beginning 
 
add_filter('init', 'plugin_custombbcode_tags');
 
// here you define a function. In this case we're creating an acronym tag
 
function plugin_custombbcode_tags() {
       $bbcode = plugin_bbcode_init(); //import the "global" bbcode object into current function
                                         // this way 
                                         // a) parsing is done only once, and by the official plugin
                                         // b) you create only ONE object, and therefore computation is quicker
        $bbcode->addCode (
                    'acronym',  // tag name: this will go between square brackets
                    'callback_replace', // type of action: we'll use a callback function
                    'plugin_custombbcode_acronym', // name of the callback function
                    array('usecontent_param' => array ('default')), // supported parameters: "default" is [acronym=valore]
                    'inline', // type of the tag, inline or block, etc
                    array ('listitem', 'block', 'inline', 'link'), // type of elements in which you can use this tag
                    array ()); // type of elements where this tag CAN'T go (in this case, none, so it can go everywhere)
 
    $bbcode->setCodeFlag ('acronym', 'closetag', BBCODE_CLOSETAG_MUSTEXIST); // a closing tag is mandatory [/tag]
 
}
 
// $content is the text between the two tags, i.e. [tag]CONTAINED TEXT[/tag] $content='CONTAINED TEXT'
// $attributes is an associative array where keys are the tag properties. default is the [tagname=value] property
 
function plugin_custombbcode_acronym($action, $attributes, $content, $params, $node_object) { 
     if ($action == 'validate') {
        // not used for now
        return true;
     }
 
    // [acronym=css]Cascading Style Sheet[/acronym]
    // will become <acronym title="Cascading Style Sheet">css</acronym>
 
    return "<acronym title=\"$content\">{$attributes['default']}</acronym>";
 
 
}
?>
1) Wenn du dich fragst, ob man so etwas auch in der alternativen Syntax-Schreibweise [acronym=Cascading Style Sheet]CSS[/acronym] realisieren kann: nein, das geht momentan nicht. Mehrere Worte sind als Tag-Attribute nicht erlaubt.
de/doc/plugins/bbcode/tips.txt · Last modified: 2012/01/22 04:24 by renihummel