Yii 1.1: yii-shortcode

Create WordPress like shortcodes
7 followers

Yii-shortcode is an extension for the Yii PHP framework that provides ability to create WordPress like shortcodes.

Usage

Setup

Download the latest release from Yii extensions.

Unzip the extension under protected/extensions and add the following to your application config:

array(
  'components' => array(
    'shortcode' => array(
        'class' => 'application.extensions.yii-shortcode.ShortCode',
     ),
  ...
  ...
  ),
);

protected/config/main.php

Registering Shortcodes

You can register as many shortcodes as you want in base controller or in any custom controller as shown below:

public function init()
{
    Yii::app()->shortcode->add_shortcode('gallery', array($this, 'gallery_callback'));
    Yii::app()->shortcode->add_shortcode('caption', array($this, 'caption_callback'));
    return parent::init();
}
 
/**
 * If there are registered shortcodes, this method will replace them with their handler output.
 * @param string $output the output generated by the current action.
 * @return string the output that has been processed by shortcode parser.
 */
public function processOutput($output)
{
    $output = Yii::app()->shortcode->parse($output);
    return parent::processOutput($output);
}

protected/components/Controller.php

/**
*
* Shortcode handler for the shortcode [gallary id=value]
* @param array $atts associative array of attributes, or empty string if no attributes are passed
* @return string the output generated for the shortcode
*/
function gallery_callback($atts)
{
    extract( Yii::app()->shortcode->shortcode_atts( array(
        'id' => '',
    ), $atts ) );
    return "<div id='gallery'>Gallery #{$id}</div>";
} 
 
 
/**
*
* Shortcode handler for the shortcode [caption]My Caption[/caption]
* @param array $atts associative array of attributes, or empty string if no attributes are passed
* @param string $content - the enclosed content (if the shortcode is used in its enclosing form)
* @return string the output generated for the shortcode
*/
 
function caption_callback($atts, $content)
{
    return '<span class="caption">' . $content . '</span>';
}

protected/controllers/SiteController.php

Overview

The add_shortcode() function is used to register a shortcode handler. It takes two parameters: the shortcode name (the string used in a post body), and the callback function name.

Three parameters are passed to the shortcode callback function. You can choose to use any number of them including none of them.

  • $atts - an associative array of attributes, or an empty string if no attributes are given
  • $content - the enclosed content (if the shortcode is used in its enclosing form)
  • $tag - the shortcode tag, useful for shared callback functions

Output

The return value of a shortcode handler function is inserted into the page in place of the shortcode macro. Remember to use return and not echo - anything that is echoed will be output to the browser, but it won't appear in the correct place on the page.

When used like this:

[caption]My Caption[/caption]

The output would be:

<span class="caption">My Caption</span>

Total 2 comments

#18242 report it
Lo3ty at 2014/10/06 10:51am
one word

awesome! Thank you very much for this extension :)

#16425 report it
PeRoChAk at 2014/02/21 04:50pm
suggestion

Nice one.

I think, instead of using

echo Yii::app()->shortcode->parse($content);

you should use beforeRander to parse any of the short code being used in the content

Leave a comment

Please to leave your comment.

Create extension