PHPackages                             oveleon/contao-glossary-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. oveleon/contao-glossary-bundle

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

oveleon/contao-glossary-bundle
==============================

A glossary extension for the Contao Open Source CMS. Glossaries are organized in archives similar to news and events and can be displayed via a list and reader module.

2.4.1(7mo ago)64.7k↓50%5[2 PRs](https://github.com/oveleon/contao-glossary-bundle/pulls)AGPL-3.0-or-laterPHPPHP ^8.3CI failing

Since Mar 18Pushed 3mo ago3 watchersCompare

[ Source](https://github.com/oveleon/contao-glossary-bundle)[ Packagist](https://packagist.org/packages/oveleon/contao-glossary-bundle)[ GitHub Sponsors](https://github.com/oveleon)[ RSS](/packages/oveleon-contao-glossary-bundle/feed)WikiDiscussions main Synced 1mo ago

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

Contao Glossary Bundle
======================

[](#contao-glossary-bundle)

 [![](https://camo.githubusercontent.com/8d77c782b143958e94a77a4312dad7dc913d454c2830f8411c7253f4bcfd4efa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73706f6e736f72732f6f76656c656f6e3f6c6162656c3d53706f6e736f72266c6f676f3d47697448756226636f6c6f723d253233666538653836)](https://github.com/sponsors/oveleon)

 [![A styles glossary with terms](docs/assets/glossary-preview.png)](docs/assets/glossary-preview.png)

*A glossary extension for the Contao Open Source CMS. Glossaries are organized in archives similar to news and events and can be displayed via a list and reader module.*

 [![](https://camo.githubusercontent.com/7199bc923680c79a834c836adcc7f070fbc353b82f4790a6d6300c6f0939c690/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6f76656c656f6e2f636f6e74616f2d676c6f73736172792d62756e646c653f636f6c6f723d656639383338)](https://github.com/oveleon/contao-glossary-bundle) [![](https://camo.githubusercontent.com/6460aae80cd49a5f6fdcd27a2ea9cfcbc1624b866e50a6036c2cdb3fa86fcd36/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f76656c656f6e2f636f6e74616f2d676c6f73736172792d62756e646c653f636f6c6f723d656639383338)](https://github.com/oveleon/contao-glossary-bundle) [![Oveleon](https://camo.githubusercontent.com/73ac9824b7cef8fbb58cdbc3087430da4b7754e6043b6028df26b2c5bab48496/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6f76656c656f6e2d6d61696e7461696e65642d6566393833383f6c6f676f3d646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e535568455567414141424d4141414155434159414141427656515a3041414141475852465748525462325a30643246795a5142425a4739695a53424a6257466e5a564a6c5957523563636c6c50414141412f7870564668305745314d4f6d4e76625335685a4739695a53353462584141414141414144772f654842685932746c644342695a576470626a30693737752f496942705a443069567a564e4d4531775132566f61556836636d5654656b355559337072597a6c6b496a382b494478344f6e68746347316c6447456765473173626e4d366544306959575276596d5536626e4d366257563059533869494867366547317764477339496b466b62324a6c4946684e5543424462334a6c494455754e69316a4d545131494463354c6a45324d7a51354f5377674d6a41784f4338774f4338784d7930784e6a6f304d446f794d6941674943416749434167496a346750484a6b5a6a70535245596765473173626e4d36636d526d50534a6f644852774f693876643364334c6e637a4c6d39795a7938784f546b354c7a41794c7a49794c584a6b5a69317a6557353059586774626e4d6a496a346750484a6b5a6a70455a584e6a636d6c7764476c76626942795a47593659574a76645851394969496765473173626e4d366547317754553039496d6830644841364c793975637935685a4739695a53356a62323076654746774c7a45754d43397462533869494868746247357a4f6e4e30556d566d50534a6f644852774f693876626e4d7559575276596d5575593239744c336868634338784c6a41766331523563475576556d567a62335679593256535a57596a4969423462577875637a703462584139496d6830644841364c793975637935685a4739695a53356a62323076654746774c7a45754d433869494868746247357a4f6d526a50534a6f644852774f6938766348567962433576636d63765a474d765a57786c6257567564484d764d5334784c794967654731775455303654334a705a326c755957784562324e316257567564456c4550534a3164576c6b4f6a56454d6a41344f5449304f544e43526b52434d5445354d5452424f4455354d45517a4d5455774f454d34496942346258424e5454704562324e316257567564456c4550534a34625841755a476c6b4f6a4d354d6a5a424e6a517a4d7a5a46516a4578525546424d546442516b4e46515441784e6a673252444934496942346258424e5454704a626e4e305957356a5a556c4550534a346258417561576c6b4f6a4d354d6a5a424e6a51794d7a5a46516a4578525546424d546442516b4e46515441784e6a673252444934496942346258413651334a6c59585276636c527662327739496b466b62324a6c49456c736248567a64484a686447397949454e544e69416f56326c755a47393363796b695069413865473177545530365247567961585a6c5a455a7962323067633352535a5759366157357a644746755932564a52443069645856705a44706c4d44686b5a44686d5a43316d4f5441344c545135597a497459574d775a4330304f474533595449344f4463325957456949484e30556d566d4f6d5276593356745a57353053555139496e68746343356b615751364f544132524468474f454e4552555178525467784d5467794d6a56424d7a424751304e424e6a4534525551694c7a34675047526a4f6e52706447786c50694138636d526d4f6b46736444346750484a6b5a6a70736153423462577736624746755a7a30696543316b5a575a6864577830496a354d62326476583239325a57786c62323566576d56705932686c626c3979656a7776636d526d4f6d7870506941384c334a6b5a6a70426248512b494477765a474d3664476c306247552b49447776636d526d4f6b526c63324e796158423061573975506941384c334a6b5a6a70535245592b4944777665447034625842745a585268506941385033687759574e725a5851675a57356b50534a79496a382b50386942545141414162464a52454655654e71553038737252464563422f42726f6d4747614a52484b5349615966496d374a52537376484979754d2f774d6f724e654566554d714b6e624b77553254427770535553575957466d5342444b576d57636777635832507672633548586675584c2f367a443250337a32507565646f75713572696c4734304a50784175556d655838347447546b7779587367684f5759516d4b6f46617a45787a5644584649674565617a6350563954436e7a47706c5269484d6c374b674357596768793976514161734d45666b54715161724a394a46577730596c684a4676327255763874644b694468546962306569485179684f73523278796a6c70304246354d42454c647236576f68452b2b58367261424f7a36507757436669434f4c7a444e38735247494359796664726742413851326b6d666e7a514a697267686c772b585a414e55513571466d4859353252392f396c5743586a4270625250636175624468744873526f4f754e317265414f2f31482f50707a666461717267677a4f4c4b37594644367a504d71654c396174306777575a754b61306933686b755a6631453674746571455a6e6d4352625a56777850494f6e335638336c6974616f677a6272507568444f497762795564387138536176424f706c30726e78524f61644675676b46566f4f4a417831683472524a7677396532623975334143725939454e415a61442f4c2f45306169484d626266516333763762467857416368717074484141714e334851724d304a637358466f687a7a65785750596b354e2b424267416978355679767a525a627741414141415355564f524b35435949493d)](https://www.oveleon.de) [![](https://camo.githubusercontent.com/e00fbedf7348a01cefa286b75f065492ec6ca630bd766b6cc803824bc19dc3f6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6f76656c656f6e2f636f6e74616f2d676c6f73736172792d62756e646c653f636f6c6f723d353961313932)](https://packagist.org/packages/oveleon/contao-glossary-bundle) [![](https://camo.githubusercontent.com/94e5f924bf6fb0c2561da2943c854c611bc3373d67259fba7e67c51c211061bc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6f76656c656f6e2f636f6e74616f2d676c6f73736172792d62756e646c652f7068703f636f6c6f723d353961313932)](https://packagist.org/packages/oveleon/contao-glossary-bundle)

---

Support
-------

[](#support)

If you like this extension, we'd love your support in keeping the open-source spirit alive.

If you think this plugin is useful, please consider [sponsoring us](https://github.com/sponsors/oveleon) to help contribute to our time invested and to further development of this and other open source projects.

Your contributions, whether through `coding`, `testing`, `providing feedback`, or even a [donation](https://github.com/sponsors/oveleon), help ensure that we can continue offering free open source software. Join us in making a difference, and thank you for your support! - [Oveleon](https://www.oveleon.de).

[![](https://camo.githubusercontent.com/d2432db86e1cfca636933728a664bf886cff501efab549a0af6abab26fe8851b/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d53706f6e736f72266d6573736167653d254532253944254134266c6f676f3d47697448756226636f6c6f723d253233666538653836)](https://github.com/sponsors/oveleon)

---

> Working with **Contao 4.13** and **Contao ^5.1** (PHP ^8.1)

---

Description
-----------

[](#description)

With the Contao Glossary Bundle, you can manage glossary terms in the backend and display them using frontend modules. Each glossary entry can be individually modified and structured with content elements. Terms appearing on your website can be automatically replaced links (or another markup) and a hovercard preview.

---

- [Features](#features)
- [Installation](#installation)
    - [Upgrading](#upgrading-to-version-2)
    - [Composer](#via-composer)
    - [Contao Manager](#via-contao-manager)
- [Setup](#setup)
    - [Glossaries](#creating-glossaries-and-terms)
    - [Modules &amp; Settings](#publishing-your-glossaries-to-your-website)
        - [Glossary overview](#glossary-overview)
        - [Reader/Detailpage](#glossary-reader)
        - [Automatic keyword conversion &amp; hovercards](#automatic-keyword-conversion-and-hovercards)
- [Front end modules](#front-end-modules)
    - [Glossary](#glossary)
    - [Glossary reader](#glossaryreader)
- [Page &amp; Glossary settings](#page--glossary-settings)
    - [Root page](#root-page-settings)
    - [Regular page](#regular-page-settings)
    - [Glossary archive](#glossary-archive-settings)
    - [Glossary items](#glossary-item-settings)
- [Creating links in Contao](#creating-links-in-contao)
    - [Insert tags](#insert-tags)
    - [TinyMCE/Link picker](#tinymce--link-picker)
        - [Limitation](#known-limitations)
- [Glossary JavaScript](#glossary-javascript)
- [Browser Support (JavaScript)](#browser-support)
- [Frequently asked Questions](#frequently-asked-questions)
- [Support](#support)
- [License](#license)

Features
--------

[](#features)

- Compatible with Contao 4.9 and higher versions (PHP 8 Support)
- Possibility to create multiple glossaries
- Frontend- and Backend permissions for glossaries and terms
- Access protection for modules
- Paginated glossary lists
- Quick-links
- Navigation/Pagination grouping for umlauts (UTF8 to ASCII conversion)
- Automatic keyword conversion of glossary terms (markup or link)
- Case sensitivity for keyword conversion
- Hover-card-preview for glossary terms
- Loading animation for hover-cards
- Insert tags
- Link-picker
- Meta title and description for detail pages
- Sitemap-Integration
- Cache invalidation
- Caching for hover-card content (session-storage)
- Caching for abbr descriptions (session-storage)
    - can be enabled using the markup feature with 'abbr'

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

[](#installation)

#### Upgrading to version 2

[](#upgrading-to-version-2)

> After upgrading from version 1 to version 2, make sure to edit your modules (glossary and glossary-reader) and set up the new templates.

#### Via composer

[](#via-composer)

```
composer require oveleon/contao-glossary-bundle

```

#### Via contao-manager

[](#via-contao-manager)

```
Search for contao glossary bundle and add it to your extensions.

```

After installing the contao-glossary-bundle, you need to run a **contao install**.

Setup
-----

[](#setup)

### Creating glossaries and terms

[](#creating-glossaries-and-terms)

The Contao Glossary Bundle uses archives (glossaries) and glossary items (terms) similar to the Contao-News-Bundle.

1. Set up a redirect page for glossary items
2. Create a new glossary archive in **Glossaries**

    [![](docs/assets/Glossaries.png)](docs/assets/Glossaries.png)
3. Edit ✎ the new glossary to add new glossary items (terms)

    [![](docs/assets/GlossaryItems.png)](docs/assets/GlossaryItems.png)
4. Create a new glossary item:

    - Title = Glossary term
    - (Search terms = keywords for automatic conversion)
    - Glossary item teaser = teaser text for glossary overview etc.
    - Publish item

    [![](docs/assets/GlossaryItemSettings.png)](docs/assets/GlossaryItemSettings.png)
5. (Additionally, you are able to create content elements for detail pages - Similar to contao news)

    [![](docs/assets/GlossaryItemDetail.png)](docs/assets/GlossaryItemDetail.png)

### Publishing your glossaries to your website

[](#publishing-your-glossaries-to-your-website)

To display your glossaries and glossary terms, you have to create two front end modules:

#### Glossary overview

[](#glossary-overview)

1. Create the front end module *Glossary*
2. Select your glossary/glossaries and configure the module
3. Embed the module in a page

    [![](docs/assets/ModuleGlossaryList.png)](docs/assets/ModuleGlossaryList.png)

#### Glossary reader

[](#glossary-reader)

1. Create the front-end module *Glossary-reader*
2. Select your glossary/glossaries
3. Embed the module in your redirect-page (for your archive)

    [![](docs/assets/ModuleGlossaryReader.png)](docs/assets/ModuleGlossaryReader.png)

### Automatic keyword conversion and hovercards

[](#automatic-keyword-conversion-and-hovercards)

1. Go to your ***website root*** and "activate glossary" under glossary settings
2. Select your glossary/glossaries
3. (Enable hovercards if needed)

    [![](docs/assets/RootPageSettings.png)](docs/assets/RootPageSettings.png)

> **Only [search terms](#glossary-item-settings) within glossary items are taken into account. Not the keyword itself**
>
> **You are able to add multiple keywords to a term. The glossary JavaScript does an exact search; thus spaces are allowed as well.**

> **Hint:**
>
> You can disable automatic keyword conversion and hovercards within "Expert settings" on regular pages. This option is recommended for glossary pages.
>
> [![](docs/assets/DisableGlossarySubPage.png)](docs/assets/DisableGlossarySubPage.png)

Front end modules
-----------------

[](#front-end-modules)

### Glossary

[](#glossary)

The glossary displays published glossary items from selected glossaries.

[![](docs/assets/GlossaryPagination.png)](docs/assets/GlossaryPagination.png)

#### Settings

[](#settings)

  **Glossary**   **Option** **Description**   Glossaries Here you can select one or more glossaries whose glossary terms should be displayed.   Glossary reader Automatically switch to the glossary reader if an item has been selected.   Hide empty groups Do not show navigation links for letters that do not exist.   Glossary pagination Activates pagination for glossary terms. Other glossary entries can be accessed via glossary navigation.   Default letter Defaul letter when glossary pagination is activated.   Convert special characters Converts UTF8-characters to ASCII for the glossary navigation/pagination.   Glossary quicklinks Adds additional quicklinks to the glossary module.   Glossary entry template Template for glossary items (simple, short, latest, full).   Module template The modules template that is being used.   Image settings Image size for teaser images.   Access protection Show the module for certain member groups only ### Glossaryreader

[](#glossaryreader)

The glossary displays published glossary items from selected glossaries.

[![](docs/assets/GlossaryDetailPage.png)](docs/assets/GlossaryDetailPage.png)

[![](docs/assets/GlossaryDetailPage2.png)](docs/assets/GlossaryDetailPage2.png)

#### Settings

[](#settings-1)

  **Glossary reader**   **Option** **Description**   Glossaries Here you can select one or more glossaries that the reader should display.   Glossary entry template Template for the glossary item (simple, short, latest, full).   Module template The modules template that is being used.   Image settings Image size for the teaser image.   Access protection Show the module for certain member groups only Page &amp; Glossary settings
----------------------------

[](#page--glossary-settings)

### Root page settings

[](#root-page-settings)

The contao glossary bundle extends the

> **Root page**

with additional ***Glossary Settings***.

The settings will work for all subpages for this root page.

  **Glossary settings**   **Option** **Description**   Activate glossary Enable replacing of keywords for this and its subpages.   Glossaries Keywords (within glossary items) for these glossaries will be converted to links or a chosen markup.   Hovercards Disable/Enables the teaser hovercards for glossary links/markup.   Configuration template The JavaScript configuration template for the Glossary Javascript [![](docs/assets/GlossaryLinks.png)](docs/assets/GlossaryLinks.png)

*All keywords within glossary items are converted to links by default (You are able to change the markup within the glossary configuration template, see [JavaScript Settings](#glossary-javascript))*

[![](docs/assets/hoverCard.png)](docs/assets/hoverCard.png)

*The hovercard shows a preview of the glossary item*

### Regular page settings

[](#regular-page-settings)

The **Expert settings** for regular pages are extended with the following option:

  **Expert settings**   **Option** **Description**   Disable glossary Disables glossary hovercards and keyword conversion for this page. ### Glossary archive settings

[](#glossary-archive-settings)

The Glossaries under **Glossaries** contain extra options for hovercards

  **Glossary settings**   **Option** **Description**   Redirect page The glossary reader page to which visitors will be redirected when clicking a glossary item.   Glossary hovercard template The template that is used for glossary hovercards.   Hovercard image size Image size for glossary hovercards. [![](docs/assets/hoverCardImage.png)](docs/assets/hoverCardImage.png)

*The teaser images within glossary items are shown in the hovercard*

### Glossary item settings

[](#glossary-item-settings)

Glossary items are terms within your glossaries.

  **Glossary item settings**   **Option** **Description**   Title The title/keyword of your glossary entry.   Glossary item alias The alias and unique reference for a glossary item. It is used for created pages and insert-tags.   Search terms Here you can enter search terms that are included in automatic cross-references (automatic keyword conversion).   Case-sensitive markup Here you can select if the search for keywords should be case-sensitive.   Redirect target The redirect of a glossary item - Use default page: Creates a page
- Page: Redirects to a page within your Contao instance
- Article: Redirects to an article within your Contao instance
- Custom URL: Redirects to a custom url

    Meta title Here you can add a custom meta title to overwrite the default page title.   Robots tag Here you can overwrite how search engines handle the glossary item. - index,follow
- index,nofollow
- noindex,follow
- noindex,nofollow

    Meta description Here you can add a custom meta description to overwrite the default page description.   Subheadline A subheadline within glossary items (Templates: glossary\_full)   Glossary item teaser The glossary item teaser can be used in a hovercard or can be shown in a glossary list instead of the full content.   Add an image Adds an image to the glossary item (Templates: glossary\_latest, glossary\_full, hovercard\_glossary\_default)   CSS class CSS classes for the glossary item   Publish item Make the glossary item publicly visible on the website. Creating links in Contao
------------------------

[](#creating-links-in-contao)

Automatic conversion creates links (or another markup) when entering the page through JavaScript. For SEO purposes, you are able to create real links within Contao using the following options:

### Using Insert tags

[](#using-insert-tags)

> For more information on *Insert tags*, please visit the

official [](https://docs.contao.org/manual/en/article-management/insert-tags/ "Insert tags :: Contao Manual")

> Contao documentation.

#### Insert tags

[](#insert-tags)

You can use insert tags with the glossary id or its alias (aliases are generated and unique).

**Example**

```
    {{glossaryitem::430}}
    {{glossaryitem::website}}

```

  **Insert tags**   **Insert tag** **Description**   {{glossaryitem::\*}} This tag is replaced with a link to a glossary item (replace \* with the ID or alias).   {{glossaryitem\_open::\*}} Is replaced with the opening tag of a link to a glossary item: *{{glossaryitem\_open::430}}Check out [doishub](https://github.com/doishub "Daniele Sciannimanica") on GitHub{{link\_close}}*.   {{glossaryitem\_url::\*}} This tag will be replaced with the URL of a glossary item: *&lt;a href="{{glossaryitem\_url::430}}"&gt;He's an awesome mentor&lt;/a&gt;*.   {{glossaryitem\_keyword::\*}} This tag is replaced with the keyword of a glossary item: *&lt;a title="{{glossaryitem\_keyword::430}}"&gt;Follow him :)&lt;/a&gt;*.   {{glossaryitem\_teaser::\*}} This tag is replaced with the teaser of a glossary item: *{{glossaryitem\_teaser::430}}*. ### TinyMCE / Link picker

[](#tinymce--link-picker)

When creating links in TinyMCE in the backend of Contao CMS, you are able to choose a new source "Glossary" in the link picker.

[![](docs/assets/LinkPicker.png)](docs/assets/LinkPicker.png)

#### Known limitations

[](#known-limitations)

> It is currently **not possible** to add **hovercard-events** to a **link created via link picker through tinyMCE** due to security reasons.
>
> To apply a hovercard event to a link, edit the html within your tinymce, and add
>
> > data-glossary-id: "your glossary item id"
>
> to your link.
>
> **Example**
>
> > &lt;a href="{{glossaryitem\_url::430}}" target="\_blank" rel="noopener" **data-glossary-id="430"**&gt;Domain name&lt;/a&gt;

Glossary JavaScript
-------------------

[](#glossary-javascript)

> Markup of glossary keywords and behavior for hovercards can be changed by parsing options into the glossary initialization. The Glossary object can be found within the config\_glossary\_default template. Developers can create a new template with the following prefix: 'config\_glossary\_', and choose it in the root page settings.

#### Settings

[](#settings-2)

  **Glossary JavaScript**   **Option** **Default** **Description**   entrySelector '#wrapper' Selectors for glossary-term search   markup 'a' Markup attribute for parsed glossary terms (e.g. 'mark', 'span', 'a')   markupAttr null Markup attribute for created markups: ```
// For example:
markupAttr: {
    'class': 'class1 class2',
    'data-myattr: 'attr'
}
```

    **language**   active true Whether the language attribute 'lang' should be parsed   lang '' Language attribute   **hovercard**   active true Whether the hovercard feature should be enabled or not   id 'gs-hovercard' Id for the hovercard   interactive true Enables interaction with the hovercard   showLoadingAnimation true Show placeholder animation until content is loaded   maxWidth 380 Maximum width of hovercard (in px)   showThreshold 300 Minimum time that showEvent has to be triggered to show a hovercard (in ms)   leaveThreshold 200 Time that hovercard will stay visible after triggering the hideEvent (in ms)   **Additional settings**   popperOptions  PopperJS options -&gt; check    includes (array) ```
'body',
'div,span,p',
'main,section,article',
'ol,ul,li',
'table,tr,th,tbody,thead,td',
'i,b,em,strong',
'mark,abbr',
'sub,sup'
```

 Readable nodes for glossary item markup. Elements (and thus it's children) that are not listed within the includes, will not be converted.  excludeClasses (array) ```
'gl-none'
```

 Readable nodes matching one or more classes within excludeClasses will not be converted.   route: {
 prefix:
 suffix:
 cache:
}
'/api/glossary/item/'
'/html'
true
  API and glossary term cache settings   hovercardBreakpoint 1024 Minimum width for hovercard-creation (in px)   config json The parsed glossary entries for the markup (id, keywords, url, etc.) ```
// For example:
'config':[
{
    "id": "1", // ID
    "keywords": ["Bar"], // Keywords
    "url": "glossar-detail\/bar.html", // Route
    "cs": 0 // Case-sensitive
},
{
    "id": "3", // ID
    "keywords": ["Foo"], // Keywords
    "url": "glossar-detail\/foo.html", // Route
    "cs": 0 // Case-sensitive
},
{...}
]
```

 [![](docs/assets/loadingAnimation.png)](docs/assets/loadingAnimation.png)

*Enabling 'showLoadingAnimation' shows an empty hovercard until content is loaded*

Browser Support
---------------

[](#browser-support)

The Glossary-JavaScript for automatic keyword conversion was tested in the following browsers:

**Mac (Big Sur, Catalina):**

- Safari (14.1, 13.1)
- Google Chrome (94)
- Mozilla Firefox (93)
- Opera (80)
- Microsoft Edge (94)

**IPhone and IPad**

- Mobile Safari (iOS 14 and iOS 14)
- Chrome Mobile (iOS 14 and iOS 14)

**Microsoft Windows**

- Google Chrome (94)
- Mozilla Firefox (93)
- Opera (80)
- Microsoft Edge (94)

> It will work with every browser that supports [String.matchAll](https://caniuse.com/?search=String.matchAll)

Frequently asked questions
--------------------------

[](#frequently-asked-questions)

### The glossary term markup does not work on my website

[](#the-glossary-term-markup-does-not-work-on-my-website)

- Make sure to check whether the glossary is activated in root page settings
- Make sure to check whether the glossary is not disabled for this subpage
- Check whether there is any JavaScript errors from other sources when opening developer tools
- Make sure to check for an existing `` container inside your ``> If you are using a custom theme, you have to adjust the glossary JavaScript within the template `config_glossary_default.html`. Here you can add an entry selector for the main content of your page as shown below ( See [JavaScript Options](#glossary-javascript)):
    >
    > ```
    > const GN = new Glossary({
    >   'entrySelector': "#YOUR-CONTENT-SELECTOR",
    > ```

### Not all links are converted on my page

[](#not-all-links-are-converted-on-my-page)

- This only happens for Safari 16.3 and lower and there is no way around this, the simple solution is to buy a new device
- The JavaScript for the markup contains a fallback due to MacOS and Safari not allowing [js-regex-lookbehind](https://caniuse.com/js-regexp-lookbehind).
- Keywords with spaces (e.g. "Foo Bar") can not be found, full keywords ("Foobar") will still be taken into account.

### I want to style the glossary markup

[](#i-want-to-style-the-glossary-markup)

- In case you need a class, you have to adjust the JavaScript configuration within `config_glossary_default.html`
- Make sure to check the [JavaScript-Settings](#glossary-javascript) for more options. > ```
    > const GN = new Glossary({
    >   'markupAttr': {
    >     'class': 'yourclass1 yourclass2'
    >   },
    > ```

Support
-------

[](#support-1)

Important

Feel free to report bugs and feature requests, do not feel entitled to bugs being fixed fast or your feature request being implemented for free. There is no such thing as a free lunch [TANSTAAFL](https://en.wikipedia.org/wiki/No_such_thing_as_a_free_lunch).

If you want a feature implemented or your bug fixed ASAP, you can commission it by contacting us via [website](https://www.oveleon.de/).

License
-------

[](#license)

This project is licensed under the AGPL-3.0 License — check [LICENSE](/oveleon/contao-glossary-bundle/blob/main/LICENSE) for more details.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance74

Regular maintenance activity

Popularity29

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity82

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 79.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 ~69 days

Recently: every ~80 days

Total

30

Last Release

225d ago

Major Versions

1.0.3 → 2.0.02021-10-20

PHP version history (4 changes)1.0.0PHP ^7.2

2.0.0PHP ^7.4 || ^8.0

2.2.0PHP ^8.1

2.4.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/acb45ab67207e71f4495c84d405e09a9de7ea11f7645c3de802d9abb3691efa0?d=identicon)[oveleon](/maintainers/oveleon)

---

Top Contributors

[![zoglo](https://avatars.githubusercontent.com/u/55794780?v=4)](https://github.com/zoglo "zoglo (102 commits)")[![eki89](https://avatars.githubusercontent.com/u/8254646?v=4)](https://github.com/eki89 "eki89 (15 commits)")[![doishub](https://avatars.githubusercontent.com/u/48379929?v=4)](https://github.com/doishub "doishub (4 commits)")[![qzminski](https://avatars.githubusercontent.com/u/193483?v=4)](https://github.com/qzminski "qzminski (2 commits)")[![arboc](https://avatars.githubusercontent.com/u/4447843?v=4)](https://github.com/arboc "arboc (2 commits)")[![cliffparnitzky](https://avatars.githubusercontent.com/u/1247552?v=4)](https://github.com/cliffparnitzky "cliffparnitzky (1 commits)")[![gmpf](https://avatars.githubusercontent.com/u/13484650?v=4)](https://github.com/gmpf "gmpf (1 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")[![xx81](https://avatars.githubusercontent.com/u/1532987?v=4)](https://github.com/xx81 "xx81 (1 commits)")

---

Tags

contaocontao-bundleglossary

### Embed Badge

![Health badge](/badges/oveleon-contao-glossary-bundle/health.svg)

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

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

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

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[netgen/layouts-core

Netgen Layouts enables you to build and manage complex web pages in a simpler way and with less coding. This is the core of Netgen Layouts, its heart and soul.

3689.4k10](/packages/netgen-layouts-core)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)

PHPackages © 2026

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