This utility bundle offers a flexible watch list for the Contao CMS.
- add files or arbitrary contao database entities like
tl_news
ortl_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
Watch list in frontend (here: bootstrap 5 template with modal integration)
- Run
composer require heimrichhannot/contao-watchlist-bundle
and update your database. - Create a watch list config (select bootstrap 5 templates if applicable).
- Important: Assign the watch list config to your root page.
- 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. - Identify the template you'd like to integrate a link for adding this item to the watch list. Common situations are:
ce_download.html5
ce_downloads.html5
news_full.html5
- ...
- Integrate the link for adding an item to the current watch list to any template by using inserttag or WatchlistLinkGenerator service.
A watch list in the context of this bundle can have multiple types of items:
File
: Any file in the contao file managerEntity
: Any database record (aka "entity"), e.g.tl_news
,tl_member
-> downloads aren't possible at the moment
- Do the steps mentioned in "Installation & configuration"
- Create a target page for shared watch lists.
- In your watch list config activate the sharing feature.
- Create the list module for the share page. You have 2 options:
- 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.
- For more complex needs (like internal areas, filtering, ...): Create a list
using heimrichhannot/contao-list-bundle and a reader
using heimrichhannot/contao-reader-bundle.
-
Activate the option
actAsWatchlistShareTarget
in the list and reader configs. -
Make sure, the
detailsUrl
in the list item template contains thewatchlist
GET parameter. For example, you could create a block for thedetailsUrl
, extend your default template and override thedetailsUrl
:{% block detailsUrl %} {{ detailsUrl }}?watchlist={{ app.request.get('watchlist') }} {% endblock %}
-
- Place the module created in the previous step on the page created in the second page.
A watch list is private to its owner. Who is the owner depends on the context, the watch list is used in:
Context | Who is the watch list's owner? |
---|---|
Anonymous | The current PHP session ID is used as the author |
Frontend login available | The 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.
The following new insert tags are available. These take into account the translated jumpTo url and alias.
Name | Example |
---|---|
{{watchlist_add_item_link::file::<file uuid (string)>::<optional: title>::<optional: watch list uuid>}} |
{{watchlist_add_item_link::file::2e6b6f54-e4af-11eb-b4fc-001e678385c6}} |
{{watchlist_add_item_link::entity::<entity table>::<entity id>::<title>::<optional: entity url>::<optional: preview file uuid (string)>::<optional: watch list uuid>}} |
{{watchlist_add_item_link::entity::tl_news::1::My headline::https://example.org/my-entity::2e6b6f54-e4af-11eb-b4fc-001e678385c6}} |
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);
}
Event | Description |
---|---|
WatchlistItemDataEvent | Modify the watchlist item before output to the watchlist module. |
Event | Description |
---|---|
huh_watchlist_list_updated | Is dispatched after the watchlist content is updated. |