Giter Club home page Giter Club logo

activeadmin-seo-petrolgas's Introduction

Active Admin Seo

Add friendly_id and SEO meta fields to your ActiveAdmin resources.

Installation

Gemfile:

gem 'activeadmin-seo', github: 'nebirhos/activeadmin-seo'
gem "activeadmin-dragonfly", github: "stefanoverna/activeadmin-dragonfly"

Install and migrate:

rake activeadmin_seo:install:migrations
rake db:migrate

Usage

app/models/page.rb:

class Page < ActiveRecord::Base
  attr_accessible :title, :content
  has_seo_meta :title
end

app/admin/page.rb:

ActiveAdmin.register Page do
  form do |f|
    # ...
    f.seo_meta_inputs
    # ...
  end
end

Model options

Default options:

has_seo_meta :field, tree: false, as: nil

Assign a role for editing Meta:

has_seo_meta :field, as: :admin

Adds url helper methods (see Nested Routes Handling below):

has_seo_meta :field, nested: true

Skips friendly_id configuration (just use the seo_meta fields):

has_seo_meta skip_friendly_id: true

Form helper options

Default options:

f.seo_meta_inputs slug_url_prefix: nil, open_graph_metas: false, basic_metas: false

Include all basic metas fields (title/description/keywords) and all open graph metas fields (title/type/url/image):

f.seo_meta_inputs basic_metas: true, open_graph_metas: true

Include only basic metas title/description fields and open graph meta title/image fields:

f.seo_meta_inputs basic_metas: [:title, :description],
                  open_graph_metas: [:title, :image]

f.seo_meta_inputs basic_metas: ['title', 'description'],
                  open_graph_metas: ['title', 'image']

f.seo_meta_inputs basic_metas: {
                    title: true,
                    description: true
                  },
                  open_graph_metas: {
                    title: true,
                    image: true
                  }

And if you skipped friendly_id options:

f.seo_meta_inputs basic_metas: true, slug: false

View Helpers

Render the tags in a view with seo_meta_tags. This method accepts any number of seo_meta and a optial hash with default values:

<%= seo_meta_tags(@page.seo_meta, @settings.seo_meta, title: "Something") %>

In this example it will lookup for all non-empty meta tags in @page.seo_meta, then in @settings.seo_meta, and finally if nothing is found :title value will be used.

Nested Routes Handling

Often you need to route objects organized as a tree (eg. a Page resource). To simplify the routes management ActiveAdmin Seo provides these methods:

app/controllers/pages_controller.rb:

def show
  @page = Page.find_by_url params[:url]
  render text: @page.url # "/path/to/my/page"
end

config/routes.rb:

get "*url" => "pages#show", constraints: ActiveAdmin::Seo::Routes.new(Page)

So a request to "/about/page" finds the page with slug "page" and parent slug "about", but a request to "/about/non-existent/page" renders a 404 error without calling the controller.

Globalize3

You can use it with activeadmin-globalize3, just put the directive in the active_admin_translates block:

app/models/page.rb:

class Page < ActiveRecord::Base
  active_admin_translates :title, :content do
    has_seo_meta :title
  end
end

app/admin/page.rb:

ActiveAdmin.register Page do
  form do |f|
    # ...
    f.translated_inputs do |t|
      t.input :title
      t.input :content
      # ...
      t.seo_meta_inputs
    end
    # ...
  end
end

Copyright

Copyright (c) 2012-2014 Francesco Disperati, Cantiere Creativo See the file MIT-LICENSE for details.

activeadmin-seo-petrolgas's People

Contributors

nebirhos avatar jerefrer avatar stefanoverna avatar mzampetti avatar spleenteo avatar tomeduarte avatar

Watchers

 avatar Matteo Nicoletti avatar Silvio Relli avatar  avatar James Cloos avatar  avatar Damiano Giacomello avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.