- golem15_seo_pages (migration 202610280002): the site's own frontend pages
with an address and a name per locale, kind, origin, parent, content date
and note; settings routes_reported_at
- SEO > Pages (golem15.seo.pages) after URL rules: list with kind, origin
and missing filters and the missing row state, form with the P9 partial;
the plugin's form extension saves the address and name per locale and
refuses url_required, url_invalid, url_taken and url_owned
- menu item type seo-page with a content descriptor, so each page gets
the SEO tab, resolves ok and is listed in the sitemaps grouped by kind
(pages, offers, services, landing-pages, titled per locale)
- management API GET/POST /_seo/api/v1/pages, PUT/DELETE /pages/{id} and
the MCP tools seo_list_pages, seo_create_page, seo_update_page,
seo_delete_page (in this commit because the operations parity test maps
every Pages operation to its tool)
17 lines
579 B
Go
17 lines
579 B
Go
package seo
|
|
|
|
import (
|
|
"git.golem15.com/golem15/sm-seo-plugin/classes"
|
|
"git.golem15.com/golem15/summercms/modules/pact"
|
|
)
|
|
|
|
var _ pact.HasMenuItemTypes = (*Plugin)(nil)
|
|
|
|
// MenuItemTypes registers the page registry's type seo-page (D-33): its
|
|
// content descriptor (controller golem15.seo.pages, Kind page) lists,
|
|
// describes and matches the registry pages, so every page gets the SEO
|
|
// tab, resolves ok and is listed in the sitemaps grouped by its kind.
|
|
func (p *Plugin) MenuItemTypes() []pact.MenuItemType {
|
|
return []pact.MenuItemType{classes.PageMenuItemType(p.Service)}
|
|
}
|