besnovatyj/yii2-cms-shortcode
Composer 安装命令:
composer require besnovatyj/yii2-cms-shortcode
包简介
Модуль управления шорткодами для Yii2 CMS
关键字:
README 文档
README
Пример использования
(NB: Модули тоже могут регистрировать свои шорткоды, например, в методе Module::init())
-
Конфигурация компонента (в
config/web.php):'components' => [ 'shortcode' => [ 'class' => 'modules\shortcode\components\ShortcodeManager', ], ],
-
Регистрация шорткодов:
// Регистрация виджетного шорткода \Yii::$app->shortcode->registerWidget('gallery', 'common\widgets\GalleryWidget'); // Регистрация текстовых шорткодов \Yii::$app->shortcode->registerText('homeUrl', 'https://example.com'); \Yii::$app->shortcode->registerText('siteName', 'My Site');
-
Использование в контенте:
echo \modules\shortcode\widgets\ShortcodeContent::widget([ 'content' => 'Visit %siteName% at %homeUrl% or %unknown%. See our [gallery, id=123, title="Photos", count=5]Photos[/gallery] or [unknown, id="1"].', ]);
Результат:
%siteName%→My Site.%homeUrl%→https://example.com.%unknown%→%unknown%(исходная строка, так как шорткод не зарегистрирован).[gallery, id=123, title="Photos", count=5]Photos[/gallery]→ ВызовGalleryWidgetс параметрамиid => 123(число),title => "Photos",count => 5(число) и внутренним контентомPhotos.[unknown, id="1"]→[unknown, id="1"](исходная строка, так как виджет не зарегистрирован).
Дополнительные замечания
- Числовые значения:
- В текущей реализации числовые значения преобразуются в
int. Если нужны числа с плавающей точкой (например,price=19.99), можно изменить условие вparseAttributesна:if (is_numeric($value)) { $value = strpos($value, '.') !== false ? (float)$value : (int)$value; }
- В текущей реализации числовые значения преобразуются в
- Админка:
- Для управления текстовыми шорткодами создайте модель и контроллер, чтобы загружать шорткоды через
loadTextShortcodes.
- Для управления текстовыми шорткодами создайте модель и контроллер, чтобы загружать шорткоды через
- Логирование:
- Если нужно отслеживать неизвестные шорткоды, добавьте логирование:
if ($replacement === null) { \Yii::warning("Unknown text shortcode: $shortcode"); return $matches[0]; }
- Если нужно отслеживать неизвестные шорткоды, добавьте логирование:
- Производительность:
- Для больших текстов рассмотрите кэширование результатов обработки шорткодов с помощью
\Yii::$app->cache.
- Для больших текстов рассмотрите кэширование результатов обработки шорткодов с помощью
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-07