Skip to content

feat(web-api): SEO follow-ups TV map, searchable robots, makeUrl - #715

Open
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-703-public-seo-followups
Open

Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-703-public-seo-followups

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Follow-up к seo-блоку публичного каталога (#599 / #567): карта TV, robots из searchable, canonical через makeUrl, opt-in include_seo на list/tree, документация события msOnGetPublicSeo.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #703

Refs #567 #599

Как это было протестировано?

cd core/components/minishop3
php -l src/Services/Seo/PublicSeoTvMap.php
php -l src/Services/Seo/PublicSeoService.php
php -l src/Services/Product/ProductCatalogService.php
php -l src/Services/Category/CategoryCatalogService.php
# exit 0

php tests/PublicSeoRoutesTest.php
# OK PublicSeoRoutesTest, exit 0

vendor/bin/phpunit tests/Unit/Services/Seo/
# OK (37 tests, 73 assertions)
  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка feat/issue-703-public-seo-followups
  • MODX: n/a (unit/smoke)
  • PHP: локальный CLI 8.x

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок (composer stan / CI job PHPStan)
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md (для значимых изменений)

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

По пунктам #703

  1. TV map — настройка ms3_public_seo_tv_map (JSON), allowlist ключей SEO, overlay до события, повторный whitelist.
  2. robotssearchable в публичном payload (bool). searchable=0noindex,nofollow.
  3. canonical$modx->makeUrl(..., 'full') с fallback на site_url + uri.
  4. include_seo на product/list, category/list, category/tree — только при include_seo=1 (default 0). На get default по-прежнему 1. При category get + include_children children тоже получают seo.
  5. og multi-sizeотложено: после feat(web-api): галерея изображений товара (images[]) #598 размеры доступны в images[].thumbs. Менять seo.og.image со строки на массив ломает контракт [Feature] Web API: seo-блок для product/category (headless SSR) #567.
  6. msOnGetPublicSeo — PHPDoc на PublicSeoService + регистрация в _build/elements/events.php (секция catalog/SEO). Страница docs.modx.pro нужно обновить отдельно (в этом репо markdown для событий не ведём).

SOFT: batch prefetch TV значений по списку id — отдельный follow-up при нагрузке на list/tree.

Add ms3_public_seo_tv_map overlay, robots from searchable, canonical via
makeUrl, and opt-in include_seo on list/tree. Document msOnGetPublicSeo;
defer multi-size og.image (#703).
@Ibochkarev Ibochkarev added priority: low Низкий приоритет, когда будет время enhancement New feature or request labels Sep 13, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 September 14, 2026 17:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: low Низкий приоритет, когда будет время

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Web API SEO-блок: отложенное из #567 — TV map, robots по searchable, canonical через makeUrl

1 participant