9 контентных сущностей со Schema.org
PublicService/Solution/Project/Technology/BlogPost/Client/TeamMember/Testimonial/Faq — мультиязычные через bpm2bMultilingualFields.
Headless CMS на платформе: 9 контентных сущностей, мультисайт PublicSite и универсальный seoData.
PublicService/Solution/Project/Technology/BlogPost/Client/TeamMember/Testimonial/Faq — мультиязычные через bpm2bMultilingualFields.
Уникальный siteKey, workingDir, npmScript; M:N со всеми контентными сущностями — контент публикуется на нескольких сайтах.
Кнопка «Опубликовать» создаёт ExternalProcess publicSiteDeploy; PublicSiteDeployHandler запускает npm run в workingDir.
PhoneNumber pattern: { type: seoData, schemaType: Service } — Loader/Saver работают с централизованным SeoRecord.
tab/acl/layouts/customizable: false; поля title/metaDescription/slug/canonicalUrl/ogImage/keywords/properties.
5 типов (Service/Product/CreativeWork/SoftwareApplication/BlogPosting) с extends; динамический редактор по schemaType.
BlogPost/Testimonial/Faq через linkParent; на Service/Solution/Project/Technology автоматически relationship-panels.
Модуль BPM2B Headless CMS превращает платформу BPM2B в полноценный headless CMS: 9 связанных контентных сущностей (услуги, решения, кейсы, технологии, блог, клиенты, команда, отзывы, FAQ), мультисайт-инфраструктура PublicSite с публикацией через NPM-пайплайн, и универсальный тип поля seoData со Schema.org property bag — добавляется одной строкой к любой сущности и хранит данные в централизованном SeoRecord.
PublicService (Service), PublicSolution (Service), PublicProject (CreativeWork), PublicTechnology (SoftwareApplication), PublicBlogPost (BlogPosting), PublicClient, PublicTeamMember, PublicTestimonial, PublicFaq — все мультиязычные через bpm2bMultilingualFields.PublicSite: уникальный siteKey, workingDir, npmScript, флаг isActive; M:N со всеми пятью основными контентными сущностями (Service/Solution/Project/Technology/BlogPost) — один контент может публиковаться на нескольких сайтах.publish.js вызывает POST /PublicSite/action/publish; сервис создаёт ExternalProcess типа publicSiteDeploy; PublicSiteDeployHandler.buildCommand() запускает cd workingDir && PATH=npmBinDir:$PATH npm run npmScript — типичный SSG-pipeline (Astro и аналоги).seoData (PhoneNumber pattern): декларация { "type": "seoData", "schemaType": "Service" } в metadata.fields; SeoDataLoader читает связанный SeoRecord и заполняет виртуальные подполя; SeoDataSaver создаёт/обновляет SeoRecord и пишет FK через QueryBuilder UPDATE.SeoRecord: tab/acl/layouts/customizable: false — без UI, как утилитарная сущность; поля совпадают с подполями seoData (title / metaDescription / slug / canonicalUrl / ogImage / ogType / keywords / properties).seoFieldsSchema.json описывает 5 типов (Service / Product / CreativeWork / SoftwareApplication / BlogPosting) с поддержкой extends; реестр seoSchemaPropertyTypes.json маппит типы свойств (string / text / url / enum / arrayOfStrings / arrayOfObjects) на конкретные view-классы — динамический редактор по schemaType сущности.varchar-intl / text-intl; ячейка хранится как объект по суффиксам языка { "label": { "Ru": "…", "En": "…" } } и переключатель языка триггерит switchLanguage на каждую cellModel.PublicBlogPost.relatedTo (linkParent: Service/Solution/Technology), PublicTestimonial.subject (linkParent ×3), PublicFaq.parent (linkParent ×5) — на детали Service/Solution/Project/Technology/BlogPost автоматически появляются панели со связанными постами, отзывами и FAQ.lucideIcons.json (~1700 имён CSS-классов) с собственным CSS-файлом; модальное окно select-icon-lucide и расширенное поле icon-class-lucide с поддержкой iconColor — выбор иконок без внешних зависимостей.Модуль предназначен для маркетинга и продаж: компания ведёт каталог услуг, кейсы, блог и команду в CRM, а статические сайты на Astro/Next/Hugo подтягивают контент через CRM API при сборке. Зависит от bpm2bMultilingualFields (мультиязычные поля и colon-suffix реестр), bpm2bJsonObjectViewer (базовый view jsonObject) и bpm2bExternalProcess (запуск NPM-пайплайнов как фоновых процессов).
Покажем работу системы на ваших данных за 30 минут. Расскажем, как окупится в вашей отрасли, и подберём конфигурацию под ваши процессы.