The Glossary feature lets you build a dictionary of terms for your helpdesk. Define words and their meanings in the backend, and JoomHelpDesk automatically links those terms wherever they appear in your content -- FAQs, knowledge base articles, announcements, and support tickets. Visitors see a tooltip with the definition when they hover over a linked term, and they can browse the full glossary on a dedicated frontend page.
This guide covers everything from creating your first glossary term to fine-tuning the auto-linking behavior across your site.
Table of Contents
- Overview
- Managing Glossary Terms
- Creating and Editing Terms
- Auto-Linking in Content
- Frontend Glossary Display
- Content Plugin Configuration
- Settings Reference
- Tips and Best Practices
1. Overview
The Glossary is a centralized terminology reference for your helpdesk. It has two main functions:
- Frontend browsing page -- An alphabetical, searchable list of all published glossary terms and their definitions. Visitors can browse by letter, search by keyword, and read short or long descriptions for each term.
- Automatic term linking -- A Joomla content plugin scans your helpdesk content (FAQs, knowledge base articles, announcements, and support ticket text) and converts recognized glossary terms into interactive links. When a visitor hovers over a linked term, a tooltip displays the definition. Clicking the link takes them to the term in the glossary.
Together, these features help your users understand technical or domain-specific language without leaving the page they are reading.
How It Works
- You create glossary terms in the Joomla backend (Components > JoomHelpDesk > Glossary).
- The
Content - JoomHelpDesk Glossaryplugin, which ships with the JoomHelpDesk package, runs on every page load. - The plugin scans the rendered text content for matches against your published glossary terms.
- Each match is replaced with an anchor (
<a>) tag that includes the term's definition in a tooltip and links to the glossary page. - Term matching respects your case-sensitivity settings, word-limit caps, and HTML tag exclusions.
2. Managing Glossary Terms
Accessing the Glossary List
Navigate to Components > JoomHelpDesk > Glossary in the Joomla administrator panel. You will see a table listing all glossary terms with the following columns:
| Column | Description |
|---|---|
| # | The term's database ID. |
| Checkbox | Select terms for bulk actions (publish, unpublish, delete). |
| Word | The glossary term. Click to edit. Sortable. |
| Description | A preview of the short description. Sortable. |
| Published | The publication state. Toggle directly from the list. Sortable. |
| Language | Shown only if Joomla multi-language is enabled. |
Filtering and Searching
- Search box -- Type a word or phrase and press Go to filter the list. Press Reset to clear the filter.
- Published filter -- Use the dropdown to show only published, unpublished, or all terms.
- Language filter -- Available when multi-language is active. Filter terms by their assigned language.
Bulk Actions
Select one or more terms using the checkboxes, then use the toolbar buttons to:
- Publish -- Make selected terms active so they appear on the frontend and are eligible for auto-linking.
- Unpublish -- Hide selected terms from the frontend and disable their auto-linking.
- Delete -- Permanently remove selected terms.
3. Creating and Editing Terms
Click New in the toolbar to create a term, or click an existing word to edit it.
Fields Available
| Field | Required | Description |
|---|---|---|
| Word | Yes | The term to define (up to 250 characters). This is the exact text that will be matched and linked in your content. |
| Language | Yes | Assign the term to a specific language or select "All" (*) to show it regardless of language. Only visible when Joomla multi-language is enabled. |
| Access | Yes | The Joomla access level (Public, Registered, Special, etc.) that controls who can view this term on the frontend and for whom auto-linking applies. Defaults to Public. |
| Case Sensitive | No | Override the global case-sensitivity setting for this specific term. Options: Use Site Default (inherits the global setting), Not Case Sensitive (matches regardless of letter case), Case Sensitive (matches only the exact letter case). |
| Alternate Words | No | Additional words or spellings that should link to this same definition. Enter one alternate word per line. For example, if the main word is "SLA" you might add "Service Level Agreement" and "service-level agreement" as alternates. |
| Description | Yes | The short definition shown in tooltips and on the glossary listing page. Supports the Joomla editor (HTML formatting). |
| Long Description | No | An extended explanation shown when a visitor clicks through to the individual term page. Supports the Joomla editor (HTML formatting). If left empty, no "Read More" link appears for this term. |
Publishing
The Published state is preserved when you save. New terms default to published. You can toggle publication from the list view without opening the edit form.
4. Auto-Linking in Content
Auto-linking is handled by the Content - JoomHelpDesk Glossary Joomla plugin. When enabled, it scans rendered content and replaces glossary terms with interactive links.
Where Auto-Linking Applies
Auto-linking is controlled by global settings and applies to the following JoomHelpDesk content areas:
| Setting | Content Area | What Gets Scanned |
|---|---|---|
glossary_faqs |
FAQs | FAQ question and answer text |
glossary_kb |
Knowledge Base | KB article body content |
glossary_announce |
Announcements | Announcement body text |
glossary_support |
Support Tickets | Ticket descriptions and comment text |
Each of these is a toggle. When enabled, the glossary plugin processes that content type. When disabled, that content type is skipped entirely.
How Matching Works
-
Term loading -- The plugin loads all published glossary terms (including alternate words) that match the current user's language and access level. Terms are sorted by word length in descending order so that longer phrases are matched before shorter substrings.
-
DOM parsing -- The content HTML is parsed into a DOM tree. The plugin walks through text nodes only, skipping the content inside excluded HTML tags (see
glossary_exclude). -
Regex matching -- Each term is matched using a word-boundary regex (
\b). This prevents partial matches inside longer words. For example, the term "API" will not match inside "capital." -
Case sensitivity -- Matching follows the per-term setting if specified, otherwise the global
glossary_case_sensitivesetting applies. -
Word limit -- The
glossary_word_limitsetting caps how many times a single term is linked within one piece of content. Set to 0 to link every occurrence. -
Link generation -- Each matched term is wrapped in an
<a>tag with the CSS classjoomhelpdesk_glossary_word. The link destination depends on theglossary_linkand long-description display settings:- If linking is enabled and the term has a long description set to display on a separate page, the link goes directly to the individual term page.
- Otherwise, the link points to the glossary listing page, scrolled to the correct letter and term anchor.
-
Tooltip content -- The plugin appends a hidden
<div>to the page containing the definitions of all matched terms. JavaScript reads this data to show tooltips on hover. -
Double-processing prevention -- Once a piece of content has been processed, a hidden marker element (
XXX_GLOSSARY_DONE_XXX) is inserted. If the plugin encounters this marker, it skips the content to avoid re-processing.
Excluded HTML Tags
By default, the plugin always skips content inside <a> tags (to avoid nesting links). You can exclude additional HTML tags using the glossary_exclude setting. Common exclusions include h1, h2, h3, h4, h5, h6, pre, and code.
Context Ignoring
The glossary_ignore setting lets you skip auto-linking for specific Joomla contexts or components. Enter one context string per line. The plugin checks both the content context identifier and the current option request parameter. If either contains the ignore string, auto-linking is skipped for that page. For example, adding com_users prevents glossary processing on user registration and profile pages.
The plugin also automatically skips:
- Any content context containing
_joomhelpdesk(internal helpdesk content is processed separately via the dedicated helpdesk settings, not the Joomla content plugin). - Finder indexer contexts (
finder.indexer) to avoid interfering with Smart Search indexing. - Content objects that have the
noglossaryproperty set to a truthy value (used internally by the glossary view itself to prevent recursive linking).
5. Frontend Glossary Display
The frontend glossary page is available via a Joomla menu item pointing to JoomHelpDesk > Glossary. It provides an alphabetical listing of all published terms visible to the current user.
Page Elements
- Page title -- Displays "Glossary" with an optional subtitle (the current letter when filtering by letter).
- Search bar -- A text input with Search and Reset buttons (shown when
show_searchis enabled in the menu item view settings). Performs a weighted full-text search across words, alternate words, descriptions, and long descriptions. - Letter bar -- An A-Z navigation strip (shown when
use_letter_baris enabled in the menu item view settings). Letters with at least one published term are clickable; letters with no terms appear greyed out.
Letter Bar Modes
The letter bar has three modes (configured via use_letter_bar in the menu item view settings):
| Value | Behavior |
|---|---|
| 0 (Off) | No letter bar is shown. All terms display on one page. |
| 1 (Anchor) | All terms display on one page. Letter links scroll to the corresponding section via in-page anchors. |
| 2 (Filter) | Each letter loads a separate page showing only terms starting with that letter. |
Term Cards
Each term is rendered as a Bootstrap card:
- Card header -- The term word, styled as a heading. If a long description exists and the display mode is set to "Separate Page" or "Modal," the word becomes a link.
- Card body -- The short description (HTML rendered). Below the description, a "Read More" action may appear depending on the long-description display mode.
Long Description Display Modes
Configured via long_desc in the menu item view settings:
| Value | Behavior |
|---|---|
| 0 (Inline) | The long description is shown directly below the short description on the listing page. No "Read More" link. |
| 1 (Separate Page) | The term word and a "Read More" link both navigate to a dedicated single-term page that shows the full description plus long description. |
| 2 (Expand) | A "Read More" link toggles the long description open/closed inline on the listing page using JavaScript. |
| 3 (Modal) | The term word and a "Read More" link open the long description in a modal popup window. |
Single Term Page
When accessed via a direct link or the "Read More" link (in Separate Page mode), the single term page shows:
- The letter bar (if enabled).
- The term word as the page title.
- The full short description.
- The long description.
Search Results
When a visitor submits a search query, the glossary performs a weighted full-text search:
| Field | Weight |
|---|---|
| Word | 100 |
| Alternate Words | 50 |
| Description | 10 |
| Long Description | 5 |
Results are ranked by relevance score. If full-text search returns no results, the system falls back to a LIKE-based search splitting the query into individual words and matching each across all fields.
Content Plugin Processing
If the glossary_use_content_plugins setting is enabled, Joomla content plugins are triggered on the description and long description text before rendering on the glossary page. This allows features like {loadmodule}, email cloaking, and other content plugins to work within glossary definitions. The glossary's own auto-linking plugin is excluded from this processing to prevent recursive linking.
6. Content Plugin Configuration
The auto-linking feature is powered by the Content - JoomHelpDesk Glossary Joomla plugin.
Enabling the Plugin
- Go to System > Plugins in the Joomla administrator.
- Search for "JoomHelpDesk Glossary."
- Ensure the plugin named Content - JoomHelpDesk Glossary is enabled (published).
- Set the plugin ordering so it runs after other content plugins that generate HTML (such as the email cloaking plugin) but before plugins that might strip or modify links.
Plugin Behavior
The plugin hooks into the onContentPrepare event. On each page load where content is rendered through Joomla's content pipeline, the plugin:
- Checks the content context against the ignore list (
glossary_ignore). If the context matches an ignore entry, processing is skipped. - Checks whether the content belongs to a JoomHelpDesk component context (contains
_joomhelpdesk). If so, processing is skipped because JoomHelpDesk handles its own glossary replacement internally through the dedicated FAQs/KB/Announcements/Support settings. - Skips the Smart Search indexer context (
finder.indexer). - Skips content that has the
noglossaryflag set. - Calls the glossary replacement engine, which performs DOM-based term matching and link insertion.
- Appends the tooltip data footer (hidden div containing definitions for matched terms).
Internal vs. External Processing
JoomHelpDesk content (FAQs, KB articles, announcements, tickets) is processed through the component's internal glossary system rather than through the Joomla content plugin. The per-area toggles (glossary_faqs, glossary_kb, glossary_announce, glossary_support) control this internal processing.
The Joomla content plugin handles glossary linking for all non-JoomHelpDesk content on your site, such as standard Joomla articles, third-party component output, and custom module content that passes through the Joomla content event pipeline.
7. Settings Reference
All glossary settings are configured in Components > JoomHelpDesk > Settings (or the component options).
| Setting | Values | Default | Description |
|---|---|---|---|
glossary_faqs |
Yes / No | -- | Enable auto-linking of glossary terms in FAQ content. |
glossary_kb |
Yes / No | -- | Enable auto-linking of glossary terms in Knowledge Base articles. |
glossary_announce |
Yes / No | -- | Enable auto-linking of glossary terms in Announcements. |
glossary_support |
Yes / No | -- | Enable auto-linking of glossary terms in Support Ticket content. |
glossary_link |
Yes / No | -- | When enabled, matched terms become clickable links to the glossary page. When disabled, terms still show tooltips but are not navigable links. |
glossary_title |
Yes / No | -- | When enabled, the term word is displayed as a heading inside the tooltip popup. When disabled, only the description text appears in the tooltip. |
glossary_show_read_more |
Yes / No | -- | When enabled and a term has a long description, a "Read More" link appears at the bottom of the tooltip. The link navigates to the full glossary entry. |
glossary_read_more_text |
Text (language string) | -- | The label text for the "Read More" link in tooltips. Supports Joomla language string keys for translation. |
glossary_all_letters |
Yes / No | -- | When enabled, the frontend letter bar shows all 26 letters (A-Z), greying out letters with no terms. When disabled, only letters that have at least one published term are shown. |
glossary_word_limit |
Number (0-10) | 0 | Maximum number of times a single term is auto-linked within one content item. Set to 0 to link every occurrence. Set to 1 to link only the first occurrence. Values 2-10 link up to that many occurrences. |
glossary_use_content_plugins |
Yes / No | -- | When enabled, Joomla content plugins are applied to glossary descriptions and long descriptions when displayed on the frontend glossary page. |
glossary_case_sensitive |
No / Uppercase Only / All Words | No | Global case-sensitivity mode for term matching. No: matches are case-insensitive. Uppercase Only: terms written entirely in uppercase (e.g., "API", "SLA") are matched case-sensitively, while mixed-case terms are matched case-insensitively. All Words: all terms are matched case-sensitively. Individual terms can override this via their per-term Case Sensitive field. |
glossary_ignore |
Textarea (one entry per line) | -- | A list of Joomla content contexts or component option strings to exclude from auto-linking. The plugin skips processing when the current context or option matches any entry. Enter one value per line, e.g., com_users or com_contact. |
glossary_exclude |
Text (comma-separated) | -- | A comma-separated list of HTML tag names to exclude from glossary term matching. The plugin never replaces terms found inside these tags. The <a> tag is always excluded by default. Common additions: h1,h2,h3,h4,h5,h6,pre,code. |
8. Tips and Best Practices
Start Small
Begin with your most important or most frequently misunderstood terms. A glossary with 20 well-written definitions is more useful than one with 200 vague ones. You can always add more later.
Write Clear Short Descriptions
The short description appears in tooltips and on the glossary listing. Keep it to one or two sentences that give a concise, standalone definition. Save detailed explanations for the long description.
Use Alternate Words Effectively
Alternate words catch common variations without creating duplicate glossary entries. Add plurals, abbreviations, and common misspellings. For example, the term "Knowledge Base" could have alternates like "KB" and "knowledgebase."
Set a Word Limit
Linking every occurrence of a common term can make pages look cluttered. Setting glossary_word_limit to 1 links only the first occurrence in each content item, which is usually sufficient for readers to find the definition.
Exclude Heading Tags
Add h1,h2,h3,h4,h5,h6 to glossary_exclude to prevent glossary links from appearing inside headings. Linked text in headings can look messy and disrupt visual hierarchy.
Use Case Sensitivity for Acronyms
Set glossary_case_sensitive to "Uppercase Only" if your glossary contains both acronyms (SLA, API, SMTP) and regular words. This prevents the acronym "IT" from matching the common word "it" while still allowing case-insensitive matching for regular terms.
Keep the Ignore List Updated
If you install third-party extensions that generate content you do not want glossary-processed, add their component option string (e.g., com_virtuemart) to the glossary_ignore textarea.
Test After Adding Terms
After creating or modifying glossary terms, visit the affected frontend pages to confirm that auto-linking works as expected. Check that:
- Terms are linked correctly and tooltips display the right definition.
- No unwanted partial matches occur (if they do, the word-boundary matching should prevent most, but very short terms like two-letter words can sometimes cause issues).
- Links inside excluded HTML tags are not created.
- The word limit is respected.
Multi-Language Sites
On multi-language Joomla sites, assign each glossary term to the appropriate language. Terms assigned to "All" (*) appear regardless of the active language. Create language-specific terms when a word has different meanings or translations across languages.
Performance Considerations
The glossary plugin loads all published terms once per page request and caches them in memory for that request. For sites with a very large number of glossary terms (hundreds or more), the DOM-based replacement process may add noticeable page load time. In that case:
- Review whether all terms truly need to be published.
- Use the
glossary_ignoresetting to skip components where glossary linking is not needed. - Set
glossary_word_limitto 1 to reduce the number of replacements per page.
Combining with Joomla Content Plugins
Enable glossary_use_content_plugins if your glossary descriptions use Joomla shortcodes like {loadmodule} or if you want email cloaking to apply within definitions. Keep it disabled if you do not need this feature, as it adds a small processing overhead for each term displayed on the glossary page.