agence-adeliom/easy-seo-bundle

Symfony SEO bundle for EasyAdmin

2.0.122 2024-05-29 09:45 UTC

README

Adeliom Quality gate

Easy SEO Bundle

Versions

Repository Branch Version Symfony Compatibility PHP Compatibility Status
2.x 2.x 5.4, and 6.x 8.0.2 or higher New features and bug fixes
1.x 1.x 4.4, and 5.x 7.2.5 or higher No longer maintained

Installation with Symfony Flex

Add our recipes endpoint

{
  "extra": {
    "symfony": {
      "endpoint": [
        "https://api.github.com/repos/agence-adeliom/symfony-recipes/contents/index.json?ref=flex/main",
        ...
        "flex://defaults"
      ],
      "allow-contrib": true
    }
  }
}

Install with composer

composer require agence-adeliom/easy-seo-bundle

Documentation

Customisation

# config/packages/easy_seo.yaml
easy_seo:
  title:
    suffix: ACME # Change the title suffix
    separator: '|' # Change the title separator
  breadcrumbs:
    class: 'breadcrumb'
    item_class: 'breadcrumb-item'
    link_class: ''
    current_class: 'active'
    separator: '>'
    separator_class: 'breadcrumb-separator'
  enable_profiler: '%kernel.debug%'
  ignore_profiler: 
    - '^/admin*'

Add SEO to your entity

Entity

use Adeliom\EasySeoBundle\Traits\EntitySeoTrait;

class Article {

    use EntitySeoTrait;

}

CRUD Controller

class ArticleCrudController extends AbstractCrudController
{
    public function configureFields(string $pageName): iterable
    {
        yield SEOField::new("seo");
    }
}

Twig template

# Render the title
{{- seo_title(object.seo) -}}

# Render the metadatas
{{- seo_metas(object.seo) -}}

# Render the breadcrumb
{{- seo_breadcrumb() -}}

Events

easyseo.title

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.title', function (Event $event) {
    // will be executed when the easyseo.title event is dispatched
    
    // Get the title
    $title = $event->getArgument("title");
    
    // Set the title
    $event->setArgument("title", "custom title");
});

easyseo.render_meta

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.render_meta', function (Event $event) {
    // will be executed when the easyseo.render_meta event is dispatched
    
    // Get SEO data
    $seoData = $event->getArgument("datas");
    
    // Set SEO data
    $event->setArgument("datas", $seoData);
});

easyseo.breadcrumb

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easyseo.breadcrumb', function (Event $event) {
    // will be executed when the easyseo.breadcrumb event is dispatched
    
    // Get breadcrumb's items
    $items = $event->getArgument("items");
    
    // Set breadcrumb's items
    $event->setArgument("items", $items);
});

License

MIT

Authors