PHPackages                             in-square/pimcore-sitemap-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. in-square/pimcore-sitemap-bundle

ActivePimcore-bundle[Utility &amp; Helpers](/categories/utility)

in-square/pimcore-sitemap-bundle
================================

Static XML sitemap generator for Pimcore (Documents + DataObjects).

v1.0.0(4mo ago)05GPL-3.0-or-laterPHPPHP ^8.1

Since Dec 29Pushed 4mo agoCompare

[ Source](https://github.com/in-square/pimcore-simple-sitemap-bundle)[ Packagist](https://packagist.org/packages/in-square/pimcore-sitemap-bundle)[ Docs](https://github.com/in-square/pimcore-sitemap-bundle)[ RSS](/packages/in-square-pimcore-sitemap-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (6)Versions (2)Used By (0)

InSquare Pimcore Sitemap Bundle
===============================

[](#insquare-pimcore-sitemap-bundle)

Static XML sitemap generator for Pimcore (Documents + DataObjects) with multi-site and multi-locale support.

Requirements
------------

[](#requirements)

- PHP 8.1+
- Pimcore 11 / Symfony 6.4
- Symfony Messenger (for queue processing)
- Elements Process Manager (commands integrate with Process Manager)

Installation
------------

[](#installation)

```
composer require in-square/pimcore-sitemap-bundle
```

Enable the bundle in `config/bundles.php`:

```
return [
    InSquare\PimcoreSitemapBundle\InSquarePimcoreSitemapBundle::class => ['all' => true],
];
```

Configuration
-------------

[](#configuration)

Create `config/packages/in_square_pimcore_sitemap.yaml`:

```
in_square_pimcore_sitemap:
  sites:
    - id: 0
      host: 'example.com'
      languages: ['pl']
      objects:
        - 'Pimcore\Model\DataObject\Post'
        - 'Pimcore\Model\DataObject\PostCategory'

    - id: 1
      host: 'example.org'
      languages: ['pl', 'en']
      objects:
        - 'Pimcore\Model\DataObject\Product'

  object_generators:
    post: 'App\\Sitemap\\PostGenerator'
    postCategory: 'App\\Sitemap\\PostCategoryGenerator'
    product: 'App\\Sitemap\\ProductGenerator'

  output:
    dir: '%kernel.project_dir%/public/sitemap'
    max_urls_per_file: 50000
```

Notes:

- `sites[*].objects` defines DataObject classes to collect for each site.
- `object_generators` keys must match `ObjectGeneratorInterface::getId()`; keys are used in sitemap filenames.

Commands
--------

[](#commands)

- `bin/console insquare:sitemap:install` – create `sitemap_item` table.
- `bin/console insquare:sitemap:collect` – dispatch sitemap messages to Messenger.
- `bin/console insquare:sitemap:dump` – generate XML files from database.
- `bin/console insquare:sitemap:delete` – delete XML files and truncate the table.

Add routing for Messenger in `config/packages/framework.yaml`:

```
framework:
  messenger:
    routing:
      'InSquare\PimcoreSitemapBundle\Message\SitemapItemCreateMessage': async
```

Run Messenger worker for the queue:

```
bin/console messenger:consume async
```

Controller
----------

[](#controller)

The bundle exposes `/sitemap.xml`. The controller selects the correct site and serves the pre-generated file from `public/sitemap/sitemap.{siteId}.xml`.

Object generators
-----------------

[](#object-generators)

Implement `InSquare\PimcoreSitemapBundle\Generator\ObjectGeneratorInterface` in your app:

```
