agence-adeliom / easy-seo-bundle
Symfony SEO bundle for EasyAdmin
Installs: 932
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 1
Type:symfony-bundle
Requires
- php: ^7.4|^8.0
- ext-json: *
- agence-adeliom/easy-common-bundle: ^1.0
- agence-adeliom/easy-media-bundle: ^1.0
- easycorp/easyadmin-bundle: ^3.4 || ^v4.0.0
- presta/sitemap-bundle: ^3.0
- symfony/config: ^4.4 || ^5.2
- symfony/dependency-injection: ^4.4 || ^5.2
- symfony/deprecation-contracts: ^2.2 || ^v3.0.0
- symfony/event-dispatcher: ^4.4 || ^5.2
- symfony/framework-bundle: ^4.4 || ^5.2
- symfony/http-kernel: ^4.4 || ^5.2
- symfony/options-resolver: ^4.4 || ^5.2
- symfony/property-access: ^4.4 || ^5.2
README
Easy SEO Bundle
Installation
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'
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); });
Troubleshooting
Adeliom\EasySeoBundle\Entity\SEO is not a valid entity or mapped super class.
In case of using php 8, old php 7 annotations are not supported by default, add those lines in your doctrine package configuration file :
doctrine: orm: mappings: EasySeoBundle: type: annotation alias: Adeliom\EasySeoBundle prefix: Adeliom\EasySeoBundle\Entity dir: "src/Entity"