Как создать свой шорткод?
Допустим, у нас есть виджет галереи
Код: Выделить всё
/**
* Class GalleryWidget
*/
class GalleryById extends Widget
{
public $cols = 6;
public $limit = 10;
public $id;
/**
* Render widget
* @return string
*/
public function run()
{
if ($this->id) {
$models = GalleryImages::find()->where(['gallery_id' => $this->id])->limit($this->limit)->published()->all();
return $this->render('index', [
'models' => $models,
'cols' => $this->cols,
]);
}
return null;
}
}
Создаем класс шорткода GalleryShortcode, который помещаем в папку, указанную в настройках (например - @common/shortcodes)
Код: Выделить всё
/**
* Plugin Name: Gallery
* Version: 1.7
* Plugin URI: https://github.com/loveorigami/lo-module-gallery/tree/master/plugins/gallery
* Description: A simple gallery plugin for use shortcode [gallery id=1]
* Author: Andrey Lukyanov
* Author URI: https://github.com/loveorigami/yii2-plugins-system
*/
class GalleryShortcodes extends BaseShortcode
{
public static function shortcodes()
{
return [
'gallery' => [
'callback'=> [GalleryById::class, 'widget'],
'tooltip' => '[gallery id=1]',
'config' => [
'cols' => 6,
'limit' => 60,
'id' => null
]
]
];
}
}
Вот и все. Инсталлируем этот плагин в админке. Активируем его. И можем вставлять галерею в контент.