40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package models
|
|
|
|
import "strings"
|
|
|
|
// TypeSetting is the per-content-type SEO settings row on
|
|
// golem15_seo_type_settings (D-104, D-21): whether the SEO tab is shown,
|
|
// the type's title and description templates, and its default robots.
|
|
type TypeSetting struct {
|
|
TypeKey string `gorm:"column:type_key;primaryKey"`
|
|
Inject bool `gorm:"column:inject"`
|
|
TitleTemplate string `gorm:"column:title_template"`
|
|
DescriptionTemplate string `gorm:"column:description_template"`
|
|
Robots string `gorm:"column:robots"`
|
|
}
|
|
|
|
func (TypeSetting) TableName() string { return "golem15_seo_type_settings" }
|
|
|
|
// DefaultTypeRobots is a type's robots before an editor sets one (D-21):
|
|
// tag archives noindex,follow, author pages index,follow, every other type
|
|
// empty (the site default).
|
|
func DefaultTypeRobots(key string) string {
|
|
k := strings.ToLower(key)
|
|
switch {
|
|
case strings.HasSuffix(k, "tag") || strings.HasSuffix(k, "tags"):
|
|
return "noindex,follow"
|
|
case strings.HasSuffix(k, "author") || strings.HasSuffix(k, "authors"):
|
|
return "index,follow"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// DefaultTypeSetting is a type's settings before an editor saves them.
|
|
func DefaultTypeSetting(key string) TypeSetting {
|
|
return TypeSetting{TypeKey: key, Inject: true, Robots: DefaultTypeRobots(key)}
|
|
}
|
|
|
|
func init() {
|
|
Register(TypeSetting{})
|
|
}
|