Skip to content

Собственные SEO-поля товара и категории с вкладкой в карточке - #792

Open
Ibochkarev wants to merge 2 commits into
betafrom
feat/issue-790-product-category-seo
Open

Ibochkarev wants to merge 2 commits into
betafrom
feat/issue-790-product-category-seo

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

У товара и категории появляются собственные SEO-переопределения (ms3_resource_seo) и вкладка в карточке менеджера. Публичный блок seo резолвится так: native → ms3_public_seo_tv_map → поля ресурса; msOnGetPublicSeo по-прежнему последний. Карта TV и include_seo не ломаются. Мета в шаблонах MODX и SERP-превью сознательно не трогались.

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

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

Связанные Issues

Closes #790

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

cd core/components/minishop3
./vendor/bin/phpunit --no-coverage tests/Unit/Services/Seo/
# OK (60 tests, 127 assertions), exit 0

php tests/PublicSeoRoutesTest.php
# OK, exit 0

cd ../../../vueManager
npx eslint src/components/seo/SeoFieldsTab.vue src/components/product/ProductTabs.vue src/entries/category-seo.js
# exit 0

Полный npm run build для category-seo vue-dist на этой машине не гонялся — entry зарегистрирован в vite.config.js.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка feat/issue-790-product-category-seo
  • MODX: n/a (unit/smoke)
  • PHP: 8.5 локально

Скриншоты (если применимо)

До После

Чеклист

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

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

  • Поля: title, description, canonical, robots (allowlist), og_title / og_description / og_image.
  • Manager: GET/PUT /api/mgr/product-data/{id}/seo (msproduct_save), GET/PUT /api/mgr/categories/{id}/seo (mscategory_save).
  • Вне скоупа: инъекция в шаблоны MODX, Google/Yandex SERP preview, генерация по шаблонам, CSV-импорт SEO.
  • После установки пакета нужна миграция Phinx и привязка события OnResourceDelete у плагина (для cleanup SEO у категорий).

Add ms3_resource_seo rows, manager tab/API, and public seo overlay
(native → TV map → resource defaults) so editors no longer need a
TV map JSON dance for per-item titles and Open Graph.
@Ibochkarev
Ibochkarev requested a review from biz87 September 25, 2026 03:48
align attachSeoToList return docs with list payloads and pass int
status codes into Response::error for PHPStan level 5.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Собственные SEO-поля у товара и категории с вкладкой в карточке

1 participant