SEO
The SEO library allows for the management and injection of dynamic data into HTML tags for the purpose of Search Engine Optimisation.
Definition
Collection is used to manage all SEO and render seo setting to html data.
SEO is used to provide system-level default page matadata.
You can use seo setting at the model level, but you need to register the model to the system SEO
Support customizing your own seo setting when you need more functions such as l10n, publish. Only need to implement this interface.
Usage
Create a SEO collection
// Create a collection and register global seo by default collection := seo.NewCollection() // Change the default global name collection.SetGlobalName("My Global SEO") // Change the default context db key collection.SetDBContextKey("My DB") // Change the default seo model setting type MySEOSetting struct{ QorSEOSetting publish l10n } collection.SetSettingModel(&MySEOSetting{}) // Turn off the default inherit the upper level SEO data when the current SEO data is missing collection.SetInherited(false)
Register and remove SEO
// Register mutiple SEO by name collection.RegisterSEOByNames("Not Found", "Internal Server Error") // Register a SEO by model type Product struct{ Name string Setting Setting } collection.RegisterSEO(&Product{}) // Remove a SEO collection.RemoveSEO(&Product{}).RemoveSEO("Not Found")
Configure SEO
// Change the default SEO name when register a SEO by model collection.RegisterSEO(&Product{}).SetName("My Product") // Register a context Variable collection.RegisterSEO(&Product{}). RegisterContextVariables("og:image", func(obj interface{}, _ *Setting, _ *http.Request) string { return obj.image.url }). RegisterContextVariables("Name", func(obj interface{}, _ *Setting, _ *http.Request) string { return obj.Name }) // Register setting variable collection.RegisterSEO(&Product{}). RegisterSettingVaribles(struct{ProductTag string}{})
Render SEO html data
// Render Global SEO collection.RenderGlobal(request) // Render SEO by a name collection.Render("product", request) // Render SEO by a model collection.Render(Product{}, request)