SEO

The SEO library facilitates the optimization of Search Engine results by managing and injecting dynamic data into HTML tags.

Usage

Initialize a Collection instance. The Collection manages all the registered models and hold global seo settings

collection := seo.NewCollection()

// Turn off the default inherit the upper level SEO data when the current SEO data is missing
collection.SetInherited(false)

Register models to SEO

// Register mutiple SEO by name
collection.RegisterSEOByNames("Product", "Announcement")

// Register a SEO by model
type Product struct{
	Name  string
	Setting Setting
}
collection.RegisterSEO(&Product{})

Remove models from SEO

// Remove by struct
collection.RemoveSEO(&Product{})
// Remove by name
collection.RemoveSEO("Not Found")

Configuration

Change the default SEO name

collection.RegisterSEO(&Product{}).SetName("My Product")

Register customized variables

collection.RegisterSEO(&Product{}).
	RegisterContextVariables("og:image", func(obj interface{}, _ *Setting, _ *http.Request) string {
		// this will render "og:image" with the value of the object in the current request
		return obj.image.url
	}).
	RegisterContextVariables("Name", func(obj interface{}, _ *Setting, _ *http.Request) string {
		return obj.Name
	})

Register setting variable

This variable will be saved in the database and available as a global variable while editing SEO settings.

collection.RegisterSEO(&Product{}).RegisterSettingVaribles(struct{ProductTag string}{})

Render SEO html data

// Render Global SEO
collection.RenderGlobal(request)

// Render SEO by name
collection.Render("product", request)

// Render SEO by model
collection.Render(Product{}, request)

Customization

You can customize your SEO settings by implementing the interface and adding functions such as l10n and publish.

Example

Definition

Collection manages all the registered models and hold global seo settings.

SEO provides 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