К содержанию

Навигация

Smart-компоненты Docara

Smart-компонент — переносимый UI-артефакт с проверяемым manifest, представлениями, шаблоном и assets. Все компоненты проходят один путь:

Code
Markdown -> typed Document IR -> renderer registry
-> SmartComponentGateway -> LayoutComposer -> PageBuilder

Docara не выбирает renderer по имени компонента. Provider registry определяет владельца namespace, затем Gateway проверяет manifest, view, preset, props, template и assets. Неизвестное или небезопасное значение останавливает сборку.

Встроенные владельцы

Namespace Provider Назначение
ui.* source-pinned framework.lock Smart-компоненты SIMAI Framework
docara.* docara.package shell и навигация Docara
namespace проекта project.<namespace> компоненты конкретного сайта

ui.alert, ui.button, docara.brand, docara.navigation, docara.toc и docara.preferences разрешаются тем же Gateway. Deprecated aliases docara.header и docara.outline хранятся в artifact metadata, а не в PHP ветвлении.

Компонент проекта

Объявите один namespace в docara.json:

JSON
{"smart":{"namespace":"project"}}

Корень фиксирован: smart/. Config и Markdown не могут выбрать PHP-класс, callback или путь к template.

Code
smart/project.notice/
├── manifest.json
├── view/default.json
├── template/default.php
└── assets/notice.css

Manifest использует tracked SIMAI Framework Smart artifact v1. Минимальный пример уже есть после docara init. В Markdown он вызывается так:

Markdown
:::project.notice
{"title":"Компонент проекта","text":"Собран общим конвейером."}
:::

Добавление нового project.* артефакта не требует правок src/. Duplicate ID, чужой namespace, symlink, traversal, неизвестный view/preset/prop, template или asset завершают сборку ошибкой.

После docara init страница /ru/project-demos/ показывает два полезных локальных примера: project.install-builder только формирует и копирует Composer-команду, а project.product-configurator считает демонстрационный итог в браузере. Их совместимые authoring aliases — project.install_builder и project.product_configurator; канонические ABI IDs используют дефисы. Оба примера обходятся без fetch, backend, заказа, оплаты или выполнения команды.

project.install-builder использует принятые ui.input и ui.checkbox. project.product-configurator показывает заполненный ui.dropdown; варианты в его slot options — только принятые дочерние ui.list-item с type=text. Все четыре Framework-компонента проходят тот же registry, Gateway и renderer, что и остальные Smart-компоненты. Их manifest, view, preset, template, assets и hydration contract проверяются по exact lock до render.

Поддержка ui.list-item здесь намеренно узкая: это текстовый option для ui.dropdown. Icons, avatars, tags и самостоятельное использование ui.list-item не входят в контракт. Нельзя заменять options массивом items, raw-разметкой или локальной копией Framework-компонента.

View выбирается одинаково для любого provider: явно указанный view имеет приоритет; иначе named preset выбирает зарегистрированный view; если не задано ни то ни другое, используется default. Это данные артефакта, поэтому новый компонент или вариант не требует условия по component ID в engine.

Контекст шаблона и assets

Docara передаёт portable PHP-шаблону целевой array ABI SIMAI Framework 5 Smart v1 и не вводит собственный template dialect.

Переменная Форма
$id строковый ID узла
$smart полное имя компонента
$manifest проверенный массив manifest
$view выбранный массив view
$preset выбранный массив preset либо пустой массив
$props проверенный массив author props
$childrenHtml готовая строка дочернего HTML
$slot строка slot либо пустая строка

Например, безопасный шаблон читает <?= htmlspecialchars((string) ($props['title'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?>. Объект $view и SmartTemplateContext относятся только к ограниченному legacy host-adapter старых package-owned шаблонов и не являются portable ABI.

Переносимый артефакт использует нейтральный Framework-owned контракт sf.smart_artifact_abi версии 1.0.0 и compatibility id sf-smart-artifact-abi-v1. Историческое имя sf5.smart.artifact.v1 обозначает только совместимый layout файлов, а не второй формат. Exact pin b3cdff87563ff78e7eddf044048a4b298fc69036 передаёт выбранные view, preset, slot и hydration одинаково под SIMAI Framework 5 и Docara. Не создавайте отдельный Docara template dialect.

Команда docara schema smart --json возвращает authoritative byte-exact Framework-owned smart.manifest.schema.json; неизменённый manifest из scaffold проходит её без преобразования. Дополнительные требования Docara проверяет отдельная policy docara.smart_admission.v1, а не альтернативная публичная схема. Manifest из docara scaffold smart ... --dry-run проходит именно эту схему. Команда inspect smart ... --json одинаково сообщает neutral contract identity для ui.*, docara.* и project namespace. Host-bound преобразование старых package manifests видно отдельно в provider_adapter, а форма template — в template_abi. Ни одно из этих полей не создаёт новый публичный dialect.

Project template считается trusted developer source. Его путь выводится только из фиксированного provider root и manifest/view записи. CSS/JavaScript также объявляются в manifest, проверяются по физическим файлам и публикуются через общий asset plan.

Интерфейсные подписи сайта приходят из content/<locale>/lang.json. Текст страниц остаётся в Markdown; manifest и project config не являются источником публичной документационной прозы.

Проверка

Bash
docara doctor
docara inspect smart project.notice --json
docara validate smart project.notice
php vendor/bin/phpunit tests/Unit/ProjectLocalSmartRuntimeTest.php
php vendor/bin/phpunit tests/Unit/SmartProviderRegistryTest.php
cd docs/site
php ../../docara build production
php ../../docara verify-static build_production

Для нового артефакта используйте hash-bound workflow docara scaffold smart project.name --dry-run, затем docara scaffold --apply=<plan_id>. Полный путь описан в Developer и AI SDK.

Full и --page используют один PageBuilder. После изменения структуры routes нужна full build; для содержимого существующей страницы доступен single-page rebuild.

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы