PHPackages                             in-square/opendxp-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/opendxp-sitemap-bundle

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

in-square/opendxp-sitemap-bundle
================================

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

v1.1.2(1mo ago)017↓90%GPL-3.0-or-laterPHPPHP ^8.3

Since Mar 30Pushed 1mo agoCompare

[ Source](https://github.com/in-square/opendxp-sitemap-bundle)[ Packagist](https://packagist.org/packages/in-square/opendxp-sitemap-bundle)[ Docs](https://github.com/in-square/opendxp-sitemap-bundle)[ RSS](/packages/in-square-opendxp-sitemap-bundle/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (6)Dependencies (12)Versions (7)Used By (0)

InSquare OpenDXP Sitemap Bundle
===============================

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

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

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

[](#requirements)

- PHP 8.3+
- OpenDXP 1.x / Symfony 7.4
- Symfony Messenger (for queue processing)
- Elements Process Manager (commands integrate with Process Manager)

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

[](#installation)

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

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

```
return [
    InSquare\OpendxpSitemapBundle\InSquareOpendxpSitemapBundle::class => ['all' => true],
];
```

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

[](#configuration)

Create `config/packages/in_square_opendxp_sitemap.yaml`:

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

    - id: 1
      host: 'example.org'
      languages: ['pl', 'en']
      objects:
        - 'OpenDXP\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

  hreflang:
    enabled: true
    x_default_language: 'en' # optional
    x_default_fallback_language: 'pl' # optional fallback used only when x_default_language is missing
```

Notes:

- `sites[*].objects` defines DataObject classes to collect for each site.
- `object_generators` keys must match `ObjectGeneratorInterface::getId()`; keys are used in sitemap filenames.
- `hreflang.enabled` controls generation of `` entries.
- `hreflang.x_default_language` selects preferred locale for `x-default`.
- `hreflang.x_default_fallback_language` is an explicit fallback locale if preferred one is missing; without it, `x-default` is omitted.

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\OpendxpSitemapBundle\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\OpendxpSitemapBundle\Generator\ObjectGeneratorWithContextInterface` in your app to receive a normalized host from sitemap configuration:

```
