PHPackages                             heimrichhannot/contao-watchlist-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. heimrichhannot/contao-watchlist-bundle

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

heimrichhannot/contao-watchlist-bundle
======================================

This utility bundle offers a flexible watchlist for the Contao CMS.

3.11.0(3mo ago)01.5k↓50%[2 issues](https://github.com/heimrichhannot/contao-watchlist-bundle/issues)LGPL-3.0-or-laterPHPPHP ^8.2

Since Apr 26Pushed 2mo ago3 watchersCompare

[ Source](https://github.com/heimrichhannot/contao-watchlist-bundle)[ Packagist](https://packagist.org/packages/heimrichhannot/contao-watchlist-bundle)[ Docs](https://github.com/heimrichhannot/contao-watchlist-bundle)[ RSS](/packages/heimrichhannot-contao-watchlist-bundle/feed)WikiDiscussions v4 Synced 1mo ago

READMEChangelog (10)Dependencies (13)Versions (63)Used By (0)

Contao Watchlist Bundle
=======================

[](#contao-watchlist-bundle)

This utility bundle offers a flexible watch list for the Contao CMS.

Features
--------

[](#features)

- add files or arbitrary contao database entities like `tl_news` or `tl_member` to a watch list
- watch lists can be viewed in the contao backend, as well
- ajax handling for a fluent usage (data is always kept up-to-date)
- integrating the watch list is as easy as assigning a frontend module to a layout section and adding links by using insert tags
- download the files added to a watch list as a ZIP archive
- contains clean templates without css styling and templates prepared with bootstrap 5 css classes
- share watch lists via link (also to public) and copy to clipboard

Impressions
-----------

[](#impressions)

[![Watch list in frontend](docs/img/watchlist.png)](docs/img/watchlist.png)

Watch list in frontend (here: bootstrap 5 template with modal integration)

Installation &amp; configuration
--------------------------------

[](#installation--configuration)

1. Run `composer require heimrichhannot/contao-watchlist-bundle` and update your database.
2. Create a watch list config (select bootstrap 5 templates if applicable).
3. **Important**: Assign the watch list config to your root page.
4. Create a frontend module of type `watchlist` and add it to a layout area of your website so that it comes with each and every sub page. Select bootstrap 5 custom template if needed.
5. Identify the template you'd like to integrate a link for adding this item to the watch list. Common situations are:
    1. `ce_download.html5`
    2. `ce_downloads.html5`
    3. `news_full.html5`
    4. ...
6. Integrate the link for adding an item to the current watch list to any template by using inserttag or WatchlistLinkGenerator service.

Item types
----------

[](#item-types)

A watch list in the context of this bundle can have multiple types of items:

1. `File`: Any file in the contao file manager
2. `Entity`: Any database record (aka "entity"), e.g. `tl_news`, `tl_member` -&gt; downloads aren't possible at the moment

Sharing watch lists
-------------------

[](#sharing-watch-lists)

1. Do the steps mentioned in "Installation &amp; configuration"
2. Create a target page for shared watch lists.
3. In your watch list config activate the sharing feature.
4. Create the list module for the share page. You have 2 options:
    1. For simpler needs and file-only watch lists: Create a frontend module of the type "watchlist\_share\_list". This module fulfills simple needs. Image watch list items are downloadable, entity items are reachable by link.
    2. For more complex needs (like internal areas, filtering, ...): Create a list using [heimrichhannot/contao-list-bundle](https://github.com/heimrichhannot/contao-list-bundle) and a reader using [heimrichhannot/contao-reader-bundle](https://github.com/heimrichhannot/contao-reader-bundle).
        1. Activate the option `actAsWatchlistShareTarget` in the list and reader configs.
        2. Make sure, the `detailsUrl` in the list item template contains the `watchlist` GET parameter. For example, you could create a block for the `detailsUrl`, extend your default template and override the `detailsUrl`:

            ```
            {% block detailsUrl %}
            {{ detailsUrl }}?watchlist={{ app.request.get('watchlist') }}
            {% endblock %}
            ```
5. Place the module created in the previous step on the page created in the second page.

Permission handling
-------------------

[](#permission-handling)

A watch list is private to its owner. Who is the owner depends on the context, the watch list is used in:

ContextWho is the watch list's owner?AnonymousThe current PHP session ID is used as the authorFrontend login availableThe current frontend user (`member`) is used as the author**Hint:** As watch lists are currently not transferable from session to member, consider showing the watch list only after login. If you have no frontend login situation, you can ignore that, of course.

Twig functions
--------------

[](#twig-functions)

The following twig functions are available:

FunctionDescription`watchlist_add_file(FilesModel|string|Uuid|FilesystemItem $file, ?string $title = null, ?string $watchlistUuid = null)`Add a file to watchlistInsert tags
-----------

[](#insert-tags)

The following new insert tags are available. These take into account the translated jumpTo url and alias.

NameExample`{{watchlist_add_item_link::file::::::}}``{{watchlist_add_item_link::file::2e6b6f54-e4af-11eb-b4fc-001e678385c6}}``{{watchlist_add_item_link::entity::::::::::::}}``{{watchlist_add_item_link::entity::tl_news::1::My headline::https://example.org/my-entity::2e6b6f54-e4af-11eb-b4fc-001e678385c6}}`Developers
----------

[](#developers)

### WatchlistLinkGenerator

[](#watchlistlinkgenerator)

Add the "Add to watchlist" button from your code:

```
use Contao\Template;
use HeimrichHannot\WatchlistBundle\Generator\WatchlistLinkGenerator;

function templateListener(Template $template, WatchlistLinkGenerator $linkGenerator) {
    $template->addButton = $linkGenerator->generateAddFileLink($template->singleSrc, $template->fileTitle);
}
```

### Symfony Events

[](#symfony-events)

EventDescriptionWatchlistItemDataEventModify the watchlist item before output to the watchlist module.### JavaScript events

[](#javascript-events)

EventDescriptionhuh\_watchlist\_list\_updatedIs dispatched after the watchlist content is updated.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance82

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity90

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 97.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~48 days

Recently: every ~14 days

Total

60

Last Release

88d ago

Major Versions

0.1.7 → 1.0.02019-01-24

1.0.9 → 2.0.0-alpha.0.1.02019-07-15

2.0.0-alpha.0.6.1 → 3.0.02021-07-27

v3.x-dev → 4.0.0-beta12026-02-11

PHP version history (6 changes)0.1.0PHP ^7.1

3.0.0PHP ^7.4

3.1.0PHP ^7.3 || ^8.0

3.2.0PHP ^7.4 || ^8.0

3.10.0PHP ^8.2

4.0.0-beta1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/28ad3224d8727b622ebd229840eea6b9dbcb83eb0bd609e6ce65b614830ff538?d=identicon)[digitales@heimrich-hannot.de](/maintainers/digitales@heimrich-hannot.de)

---

Top Contributors

[![koertho](https://avatars.githubusercontent.com/u/12064642?v=4)](https://github.com/koertho "koertho (100 commits)")[![vvohh](https://avatars.githubusercontent.com/u/75325799?v=4)](https://github.com/vvohh "vvohh (2 commits)")[![ericges](https://avatars.githubusercontent.com/u/25957923?v=4)](https://github.com/ericges "ericges (1 commits)")

---

Tags

contaowatchlist

### Embed Badge

![Health badge](/badges/heimrichhannot-contao-watchlist-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/heimrichhannot-contao-watchlist-bundle/health.svg)](https://phpackages.com/packages/heimrichhannot-contao-watchlist-bundle)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[codefog/contao-haste

haste extension for Contao Open Source CMS

42650.8k139](/packages/codefog-contao-haste)[contao-community-alliance/dc-general

Universal data container for Contao

1578.3k86](/packages/contao-community-alliance-dc-general)[codefog/contao-news_categories

News Categories bundle for Contao Open Source CMS

3183.3k6](/packages/codefog-contao-news-categories)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
