Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/simonedbarber/seo

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/simonedbarber/seo

  • v0.0.0-20230903023139-1ce852def0fa
  • Source
  • Go
  • Socket score

Version published
Created
Source

SEO

The SEO library allows for the management and injection of dynamic data into HTML tags for the purpose of Search Engine Optimisation. Using the QOR Admin interface, an administrator can easily manage the content of an HTML page's title, description, and meta tags.

Build Status

GoDoc

Definition

// The `QorSeoSetting` struct is a normal GORM-backend model, need to run migration before using it
db.AutoMigrate(&seo.QorSeoSetting{})

// SeoGlobalSetting used to generate `Site-wide Settings` part
type SeoGlobalSetting struct {
    SiteName string
}

SeoCollection = seo.New()

// Configure `Site-wide Settings`
SeoCollection.RegisterGlobalVaribles(&SeoGlobalSetting{SiteName: "ASICS"})

// Configure SEO storage model, you could customize it by embed seo.QorSeoSetting to your custom model
SeoCollection.SettingResource = Admin.AddResource(&seo.QorSeoSetting{}, &admin.Config{Name: "SEO", Invisible: true})

// Configure `Page Metadata Defaults`
SeoCollection.RegisterSeo(&seo.SEO{
    Name:     "Default Page",
})

SeoCollection.RegisterSeo(&seo.SEO{
    Name:     "Category Page",
    // Defined what Varibles could be using in title, description and keywords
    Varibles: []string{"CategoryName"},
    // Generated a mapping to replace the Variable, e.g. title: 'Qor - {{CategoryName}}', will be dislayed as 'Qor - Clothing'
    Context: func(objects ...interface{}) map[string]string {
        values := make(map[string]string)
        if len(objects) > 0 {
            category := objects[0].(Category)
            values["CategoryName"] = category.Name
        }
        return values
    },
})

Usage

qorContext := &qor.Context{DB: db}

// render default meta tags
SeoCollection.Render(qorContext, "Default Page")

// render cateogry pages' meta tags
var category Category
db.First(&category, "code = ?", "clothing")
SeoCollection.Render(qorContext, "Category Page", category)

Structured Data

// micro search
seo.MicroSearch{
  URL:    "http://demo.getqor.com",
  Target: "http://demo.getqor.com/search?q=",
}.Render()

// micro contact
seo.MicroContact{
  URL:         "http://demo.getqor.com",
  Telephone:   "080-0012-3232",
  ContactType: "Customer Service",
}.Render()

// micro product
seo.MicroProduct{
  Name: "Kenmore White 17 Microwave",
  Image: "http://getqor.com/source/images/qor-logo.png",
  Description: "0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock."
  BrandName: "ThePlant",
  SKU: "L1212",
  PriceCurrency: "USD",
  Price: 100,
  SellerName: "ThePlant",
}.Render()

To use multiple seo setting in one object

Add a field called CurrentSeoField in the struct, it must be put in front of seo settings.

type Obj struct {
  // CurrentSeoField must be put before seo fields.
  CurrentSeoField string `gorm:"-"`
  JapaneseSeo             qor_seo.Setting
  EnglishSeo              qor_seo.Setting
}

Then when rendering seo, set the name of seo setting you want to render. E.g. EnglishSeo

obj.CurrentSeoField = "EnglishSeo"

Then the proper seo setting will be used in this rendering. If has CurrentSeoField set but with no value or cannot find seo setting by given name. the first seo setting will be used as default.

License

Released under the MIT License.

FAQs

Package last updated on 03 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc