besnovatyj/yii2-cms-shortcode 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

besnovatyj/yii2-cms-shortcode

Composer 安装命令:

composer require besnovatyj/yii2-cms-shortcode

包简介

Модуль управления шорткодами для Yii2 CMS

README 文档

README

Пример использования

(NB: Модули тоже могут регистрировать свои шорткоды, например, в методе Module::init())
  1. Конфигурация компонентаconfig/web.php):

    'components' => [
        'shortcode' => [
            'class' => 'modules\shortcode\components\ShortcodeManager',
        ],
    ],
  2. Регистрация шорткодов:

    // Регистрация виджетного шорткода
    \Yii::$app->shortcode->registerWidget('gallery', 'common\widgets\GalleryWidget');
    
    // Регистрация текстовых шорткодов
    \Yii::$app->shortcode->registerText('homeUrl', 'https://example.com');
    \Yii::$app->shortcode->registerText('siteName', 'My Site');
  3. Использование в контенте:

    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"] (исходная строка, так как виджет не зарегистрирован).

Дополнительные замечания

  1. Числовые значения:
    • В текущей реализации числовые значения преобразуются в int. Если нужны числа с плавающей точкой (например, price=19.99), можно изменить условие в parseAttributes на:
      if (is_numeric($value)) {
          $value = strpos($value, '.') !== false ? (float)$value : (int)$value;
      }
  2. Админка:
    • Для управления текстовыми шорткодами создайте модель и контроллер, чтобы загружать шорткоды через loadTextShortcodes.
  3. Логирование:
    • Если нужно отслеживать неизвестные шорткоды, добавьте логирование:
      if ($replacement === null) {
          \Yii::warning("Unknown text shortcode: $shortcode");
          return $matches[0];
      }
  4. Производительность:
    • Для больших текстов рассмотрите кэширование результатов обработки шорткодов с помощью \Yii::$app->cache.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固