Download the PHP package besnovatyj/yii2-cms-shortcode without Composer
On this page you can find all versions of the php package besnovatyj/yii2-cms-shortcode. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download besnovatyj/yii2-cms-shortcode
More information about besnovatyj/yii2-cms-shortcode
Files in besnovatyj/yii2-cms-shortcode
Package yii2-cms-shortcode
Short Description Модуль управления шорткодами для Yii2 CMS
License MIT
Informations about the package yii2-cms-shortcode
Пример использования
(NB: Модули тоже могут регистрировать свои шорткоды, например, в методе Module::init())
-
Конфигурация компонента (в
config/web.php): -
Регистрация шорткодов:
-
Использование в контенте:
Результат:
%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на:
- В текущей реализации числовые значения преобразуются в
- Админка:
- Для управления текстовыми шорткодами создайте модель и контроллер, чтобы загружать шорткоды через
loadTextShortcodes.
- Для управления текстовыми шорткодами создайте модель и контроллер, чтобы загружать шорткоды через
-
Логирование:
- Если нужно отслеживать неизвестные шорткоды, добавьте логирование:
- Производительность:
- Для больших текстов рассмотрите кэширование результатов обработки шорткодов с помощью
\Yii::$app->cache.
- Для больших текстов рассмотрите кэширование результатов обработки шорткодов с помощью
Виджет-справочник ShortcodesList
Кнопка, открывающая модалку со всеми доступными шорткодами: описание, готовый пример вставки с кнопкой «копировать» и мелкой подсказкой — чем шорткод заменяется. Смысл в том, чтобы копировать пример прямо из формы редактирования контента, не уходя в модуль шорткодов.
Что внутри модалки:
- поиск по имени/описанию/примеру и фильтр по типу (виджетные / текстовые);
- у каждого шорткода — кнопка копирования примера и кнопка копирования имени;
- ссылки на карточку и на редактирование шорткода (показываются только при наличии прав);
- шорткоды, зарегистрированные в коде (
registerText/registerWidget), помечены бейджем «в коде» — у них нет записи в БД, поэтому нет и ссылок на модуль.
Всё, что относится к виджету, лежит в src/widgets/shortcodesList/: класс, views/, assets/
и media/ с исходниками и бандлом. Клиентская часть — TypeScript, сборка ESBuild:
Кэш каталога шорткодов
Шорткоды читаются из БД один раз и живут в кэше (APCu) одним элементом с тегом shortcodes —
см. services/ShortcodeCatalog. Из этого кэша берут данные и компонент shortcode
(замены на горячем пути рендера контента), и виджет-справочник.
Инвалидация автоматическая: ShortcodeManageService сбрасывает тег при создании, изменении и
удалении шорткода. Вручную кэш сбрасывается из модуля очистки (ClearManager) — строка
«Кэш каталога шорткодов»; эндпойнты объявлены в config/config.php (params.endpoints.clear),
обработчик — controllers/backend/ClearController. Жёсткой зависимости от ClearManager нет:
без него параметры просто никем не читаются.
All versions of yii2-cms-shortcode with dependencies
besnovatyj/yii2-cms-contracts Version ^3.0
php Version >=8.4
yiisoft/yii2 Version ~2.0.0
yiisoft/yii2-bootstrap5 Version ~2.0.0