Fileshelf (EN)

Download management for Joomla with a protected storage folder, counter, password protection and Smart Search · Version 1.10.1 · Stand 12.11.2026

Fileshelf at a glance

Fileshelf manages downloads in Joomla 6 with Joomla's own means: categories, tags, access levels, fields and versions come from the core, not from a system of its own. Each download has exactly one file, one main category and, if you like, further categories in which it appears as well.

The list of downloads in the backend with version, access level and counter
The list of downloads: title, categories, version, access level and how often each file was downloaded.

What Fileshelf does for you

The parts

Fileshelf is installed as one package. It contains:

PartTask
Component FileshelfDownloads, storage, website views, tools
System - FileshelfCategory password, protection against deleting categories in use
Content - FileshelfShortcodes in articles and modules
Button - FileshelfThe button “Download” in the editor
Smart Search - FileshelfDownloads in the site search
FileSystem - FileshelfThe area “Downloads” in the media manager
Module Fileshelf - DownloadsLatest, most popular, featured downloads or those of a category

The plugins are enabled on the first installation. Always keep “System - Fileshelf” enabled; you can disable the others if you do not use their feature.

Deutsche Fassung

Requirements and installation

Requirements

Installing

  1. Download the package pkg_fileshelf-<version>.zip.
  2. In the backend open System → Install Extensions and drop the ZIP file into the field.
  3. After the installation Joomla shows an overview of the package with links to the dashboard. In the Free version it also carries a short note on the Pro version.

On installation Fileshelf creates the storage folder fileshelf/ in the Joomla folder and writes protection files into it. Then open Components → Fileshelf → Dashboard: it shows whether the folder is protected (see Storage folder and self-test).

The dashboard of the Free version: welcome line, note on the Pro version, figures with the status card, quick access, downloads changed last and most popular, the Fileshelf plugins
The dashboard of the Free version with nothing to do: the welcome line at the top, the figures with the status card, below quick access, the downloads changed last and most popular, and the plugins.

The dashboard

Every page of Fileshelf has the button Help at the top right: it opens this manual. All pages, including those of the Pro version, are also in the menu under Components → Fileshelf.

Updates

New versions appear under System → Update → Extensions. An update keeps your downloads, files and settings; it works from any earlier version.

Uninstalling

When you uninstall the package, Joomla removes the tables of Fileshelf. The storage folder with your files stays – delete it by hand if you no longer need it.

Deutsche Fassung

Storage folder and self-test

All files lie in a storage folder. No download is handed out through the address of its file, but always through Fileshelf: Fileshelf first checks whether the visitor may get the file, then counts the download and sends the file. So that this cannot be bypassed, the folder must be locked against direct access.

The self-test

The dashboard checks the folder itself: Fileshelf places a test file and tries to fetch it through its address. It tests again after a day or when the folder changes; with “Allow software packages” on, every page of Fileshelf in the backend makes up for a missing test. The result comes in three colours:

ResultMeaning
GreenProtected: the files cannot be reached by their address, or the folder lies outside the web directory.
RedNot protected: files can be downloaded past protection and counter. The dashboard shows how to close the folder.
YellowNot testable: the website did not answer the test request. Check again later.

Check now repeats the test, for example after you changed the server configuration.

Apache

Fileshelf places an .htaccess file into the folder. If the test stays red, your server does not allow .htaccess files. Ask your host to allow AllowOverride for this folder.

nginx

nginx does not read .htaccess files. Add the rule the dashboard shows to the server configuration (through your host if need be). For the default folder it reads:

location ^~ /fileshelf/ { deny all; }

Outside the web directory

Safest is a folder that has no address at all. Enter an absolute path outside the web directory under Options → Storage → Storage folder, for example /home/customer/fileshelf. Existing files are not moved when you change it – copy them into the new folder yourself.

A menu item with the same alias as the storage folder (such as fileshelf) would be locked together with the folder. The dashboard warns in this case; give the menu item another alias.

Delivery by the web server

Under Options → Storage → Delivery you can let the web server send the file instead of PHP: X-Sendfile (Apache with mod_xsendfile) or X-Accel-Redirect (nginx with an internal address). Only choose this if your host has set it up; when in doubt, keep PHP. Protection and counter apply in all three cases.

Deutsche Fassung

Creating and maintaining downloads

A download is an entry with exactly one file. You create it under Components → Fileshelf → Downloads → New.

The form of a download: the file at the top, the description below, status, category and additional categories on the right
The tab “File and description”: the file at the top, the description below, status, category, additional categories and tags on the right.

The form has at most seven tabs: File and description, Access, in the Pro version Sharing, Versions and Statistics, plus Publishing and Permissions. Custom fields get a tab of their own, as with articles.

Tab “File and description”

The file

The section File with the current file, the field to replace it and the choice of free files
Upload, or choose an existing file from the storage folder; below it the facts about the file.

Allowed are the file types from Options → Storage → Allowed file types. Programs and web pages (for example php, svg, html) are never accepted, not even in names like report.php.pdf. Fileshelf also checks whether the content matches the extension, and Joomla checks the file as well.

Extensions and other software packages

A ZIP with an extension for Joomla, Shopware or WordPress contains PHP files. Joomla refuses such archives on upload, and Fileshelf then says what to do. To offer extensions, switch on Options → Storage → Allow software packages. Fileshelf then accepts zip, tar, gz and tgz archives with program code:

For tar.gz and tgz also add gz and tgz to the allowed file types. Programs such as .exe or .msi stay blocked. Visitors always get a package as a file to save; the checksum on the page of the download helps them verify it.

Tab “Access”

Here you set a password for this one download (see Password protection). In the Pro version you also bind the download to plans of Membership Pro there.

Tab “Sharing” (Pro version)

One-time and time-limited links (see Links) and the notifications (see Notifications).

Tab “Publishing”

Status, access level, language, start and end of publishing, author and counter. An unpublished or expired download does not exist for visitors – not even through an old link.

On saving, Fileshelf checks the permissions, whichever way the download comes (form, several files, upload from the website): only who may change the state in the category can publish – otherwise a new download stays unpublished. Only one's own access levels can be chosen, and an additional category only where one may create downloads.

The list

For every download the list shows the main category, the file with type and size, version, access level and counter. A download without a file is marked red. Above the list are quick filters with their numbers: All, Published, Unpublished and – if there are any – Without file. The filter options also filter by status, featured, file, category (main or additional) and level, access level, author, language and tag.

Deutsche Fassung

Categories

Fileshelf uses Joomla's categories. You manage them under Components → Fileshelf → Categories like article categories – with subcategories, access levels, language and permissions.

Additional tabs

In the form of a category Fileshelf adds two tabs:

The tab Fileshelf: Display with the choice list, table or cards
The display applies unless the category's menu item chooses otherwise.

Which display applies is decided in this order: the menu item of the category, then the category, then Options → Display → Layout.

The image as icon

The image of the category (tab Options → Image in the category form) appears small in front of the category's name and next to its heading on the website.

Access through additional categories

Under Options → Downloads → Access through additional categories you decide whether only the main category counts for a download (default) or whether the access levels of its additional categories must allow it as well (Strictest).

Deleting

A category that still holds downloads cannot be deleted. Move or delete the downloads first. When a category is deleted, Fileshelf also removes it as an additional category from the downloads.

Deutsche Fassung

Password protection

In addition to access levels, a password can protect a download. The visitor enters it once and then downloads without needing a user account.

Password for one download

The tab Access of a download with password field and status
The tab “Access” only shows whether a password is set – never the password itself.

Password for a category

The tab Fileshelf in the category form with the category password
A category password protects every download of the category and its subcategories.

A category password applies to every download of the category and its subcategories that has no password of its own. Whoever entered it once can fetch all these downloads.

What the visitor sees

The form to unlock a protected download on the website
The form appears when a visitor opens a protected download.

Fileshelf stores passwords only encrypted (as a hash). They appear neither in the form nor in the version history nor in an address. Simply set a forgotten password anew.

Deutsche Fassung

Downloads on the website

On the website, menu items show your downloads. Create them under Menus → [your menu] → New → Menu Item Type → Fileshelf.

The menu item types

TypeShowsImportant settings
CategoriesThe categories below the chosen root as tiles or as a compact list, with image, description, number of downloads and subcategoriesRoot category, layout, top level category description, category image, description, show number, levels (1 = without subcategories)
CategoryThe downloads of a category and its subcategoriesLayout, ordering, number per page, category image and its layout, details (size, version, date, counter, tags), show locked downloads
Single downloadThe page of a downloadSend the file directly instead of showing the page
Latest downloadsThe most recently created downloadsNumber, categories, period in days
The category overview on the website with the number of downloads per category
Menu item “Categories” as tiles: per category its image (from the field “Image” of the category, else a folder symbol), description, the number of downloads with all subcategories, and the subcategories to click.

Above the tiles stand title, description and image of the chosen root category (switched off in the menu item under “Top Level Category Description” and “Category Image”). Every tile has an image area in the format 16 : 9; the image is fitted, never cropped, so logos stay whole.

Category image and description

At the top of every category stand its title, description and the image from the field “Image” of the category. The image stands beside the text, at most 220 × 160 pixels and never cropped; on narrow screens it stands above. If you like, it appears as a banner across the full width in the format 3 : 1 – good for photos, but cropped. You choose both in the options or per menu item (“Category Image”, “Category image layout”). The alternative text comes from the image field of the category; with “No Description” ticked there, the image counts as decoration.

Headings

Every page has exactly one main heading (h1). In a category it is its title – or the page heading of the menu item when “Show Page Heading” is on and the menu item shows this very category. Below it the small sections Subcategories and Downloads structure the page (h2), the downloads in them are h3. Pages without a title of their own, such as “Latest downloads”, keep their main heading with the page heading switched off – then for screen readers only. This helps screen readers and search engines.

Heading and introduction of the overview

Above the categories of the download overview a heading and an introduction of your own can stand. Enter both in the Fileshelf options (tab “Display”) for every overview, or in the menu item of the overview for that one only; an empty field in the menu item takes the value from the options. A heading entered there is the main heading of the page and is always shown, even with “Show Page Heading” off. Without one, the rules above apply.

Browser page title

The “Browser Page Title” of a menu item (tab “Page Display”) applies to the page the menu item shows: the overview, the category, the download or “Latest downloads”. Pages below it, such as a subcategory, carry their own title. The site name is added if Joomla's global configuration says so.

Three layouts of a category

Each layout leads through the categories in its own way. You choose it in the menu item, in the category (tab “Fileshelf: Display”) or for all in the options.

In every layout the file type stands as a coloured label (“PDF”, “ZIP” …); the colour helps to scan, the word names the type.

Without a page per download

Every download has a page of its own with description and details. To list downloads with a direct link only, set A page per download to “No” in the options (tab “Display”) or in the menu item. Then:

Above the list visitors can search (title and file name), sort and – with several file types – filter by type. The choice is part of the address, so a filtered link can be passed on. Switch it off with Search and sorting in the menu item or in the options. Joomla's breadcrumbs show the way from the menu item to the category or the download.

Fileshelf takes the look of buttons, fields and tables from the template: every button carries the classes of Bootstrap (Cassiopeia and many other templates) and of UIkit (YOOtheme Pro) at once. For more, create overrides for com_fileshelf/category and the layout fileshelf/item.

A category as a list with the category tree on the left, search and sorting above the list
Layout “List with category tree” (default): the tree on the left, search and sorting above the list.
A category as a table with “Change category” and sortable columns
Layout “Table”: “Change category” at the top, the column headers sort.
A category in the layout cards
Layout “Cards”: the way back and the subcategories at the top.

Locked downloads

Downloads whose access level the visitor lacks are hidden. With Show locked downloads (options or menu item) they appear with a lock and a link to log in. Password-protected downloads always stand in the list, with the link Enter password.

The page of a download

The page of a download: title, categories, description and beside it the box with file, button and details
Title and categories, the description and beside it the download box.

The download box names the file with type and size, carries the button Download (or the lock with its reason) and the details version, date and – if switched on – the number of downloads. On request it shows the checksum (SHA-256) to unfold, so visitors can verify a downloaded file; it is switched on in the options or in the menu item “Single download”. In a narrow area – on a phone or in a narrow column – the box stands above the description.

If a download appears in several categories, its page tells search engines that the address under the main category is the authoritative one (canonical). So it does not count twice.

Addresses

With search engine friendly URLs switched on, the addresses look like this:

The option Remove IDs from URLs (Options → Integration) decides whether the number of the download stands in the address. The alias of a download must be unique per category.

Deutsche Fassung

Fitting your template

Fileshelf follows your template instead of painting over it. Without any setting, lists, cards, tables and the page of a download take the type, colours, buttons and fields of the template – tested with Cassiopeia, YOOtheme Pro, Helix Ultimate and Astroid. This page shows how to adjust it further, from the colour picker to your own override.

Without code: the options

Under Options → Appearance you choose an accent colour and the corners, or you switch off the Fileshelf stylesheet (see Options and permissions).

With one line of CSS: the variables

Colours, lines and corners of Fileshelf hang on variables. Set them in the user.css of your template (Cassiopeia: the file media/templates/site/cassiopeia/css/user.css):

.com-fileshelf {
  --fsh-accent: #b8322b;   /* buttons and markers */
  --fsh-on-accent: #fff;   /* text on the accent colour */
  --fsh-border: #d0d4da;   /* lines and frames */
  --fsh-radius: 0;         /* corners */
  --fsh-gap: 1.5rem;       /* space between entries */
}

Without values of your own, Fileshelf takes the colours of the template: with Cassiopeia its primary and border colour, with Bootstrap templates (Helix Ultimate, Astroid, T4) the Bootstrap variables, otherwise it derives lines from the text colour. That is why Fileshelf stays readable on dark sections as well.

Your own rules always win

The look of Fileshelf (colours, frames, buttons, fields) stands in a CSS layer of its own (@layer fileshelf). Every rule of your template or your user.css takes precedence – without !important. Only the arrangement (grids, spacing) and the choice under “Appearance” stand outside.

Narrow columns

Lists, cards and the page of a download follow the width of the area they stand in – not the width of the screen. In a sidebar the list becomes compact and the button shows only a symbol; screen readers still read its name.

Classes of buttons and fields

Buttons, fields and tables carry the classes of Bootstrap 5 and UIkit 3 at once – each framework takes its own. If your template uses another one, create the file templates/<your-template>/html/com_fileshelf/ui.json and name the classes of your framework per building block:

{
  "button": "button is-primary",
  "button-secondary": "button",
  "input": "input",
  "select": "select",
  "table": "table is-striped"
}

Building blocks: button, button-secondary, button-link, button-small, input, textarea, select, label, field, table, card, section (the small section headings). Fileshelf's own classes (com-fileshelf-…) always stay. With a child template, its file applies before the parent's.

Replacing the stylesheet

A template can replace the Fileshelf stylesheet with its own: an entry named com_fileshelf.site in its joomla.asset.json. Or switch it off under Options → Appearance.

Overrides

All views and building blocks can be overridden the usual Joomla way, under System → Site Templates → your template → Create Overrides → Components → com_fileshelf or Layouts → com_fileshelf. The most important layouts:

Since 1.9.0: a category has the sections “Subcategories” and “Downloads”, the downloads in them are h3, and the head comes from the layout fileshelf/categoryhead (the former fileshelf/categoryicon is gone). If you overrode category/default_head.php, category/default_filter.php, category/default_cards.php, category/default_table.php or category/default_entries_*.php, take these changes into your override, else sections or the image are missing there.

Deutsche Fassung

Shortcodes in articles

With shortcodes you place downloads in articles, modules and every other text that runs through the content plugins. The easiest way is the button Download in the editor (see Editor button); you can also write them by hand.

An article with link, button, counter and list from shortcodes and the module
An article with every kind of shortcode and, below, the module.

The forms

ShortcodeResult
{fileshelf id=12}Link with the title of the download
{fileshelf id=12 text="Get the form"}Link with your own text
{fileshelf id=12 button}Button
{fileshelf id=12 button class="uk-button uk-button-primary"}Button with your own CSS classes
{fileshelf id=12 count}Only the number of times the download was fetched
{fileshelf cat=3}List of the downloads of a category (main or additional)
{fileshelf cat=3 layout=cards limit=5 order=popular}Cards, at most 5, most popular first

{fsh …} is the short form of {fileshelf …}. order knows title (default), rtitle, newest, oldest, popular and ordering; limit goes up to 100.

What visitors see

A list that stands alone in a paragraph replaces the paragraph. So write {fileshelf cat=…} on a line of its own.

Deutsche Fassung

Editor button

Below the editor, or in TinyMCE's menu CMS Content, you find the button Download. It opens a selection dialog and inserts the matching shortcode.

The selection dialog of the button Download with the choice link, button or number
At the top you choose the form, below it the download. In the tab “Categories” you insert a whole category as a list.
  1. Place the cursor where you want the download and click Download.
  2. Choose under Insert as: link, button or number of downloads.
  3. Click the download. Search, filters and ordering work as in the list.
  4. For a list, open the tab Categories and click the category.

The downloads are also offered as a source in TinyMCE's link dialog. So you link selected text directly to the page of a download.

Who sees the button

The button appears in the backend for users with the permission “Access Administration Interface” on Fileshelf. It is not offered in the frontend editor.

Deutsche Fassung

The module

The module Fileshelf - Downloads shows downloads in a module position. Create it under Content → Site Modules → New → Fileshelf - Downloads.

Settings

SettingMeaning
ShowLatest downloads, Most downloaded, Downloads of a category or Featured downloads
CategoriesOnly downloads of these categories (main or additional). Required for “Downloads of a category”, optional otherwise.
Number of DownloadsAt most this many entries (up to 100)
DisplayList or cards
Title HeadingHeading level of the download titles, one below the module title
File Type and Size, Date, Downloads CountShow, hide or as in the Fileshelf options

The module uses the same access check as the category view: locked downloads appear with a lock. It uses Joomla's module cache; the cache distinguishes access levels, language and unlocked passwords, so that nobody gets another visitor's view.

Deutsche Fassung

Search (Smart Search)

The plugin Smart Search - Fileshelf adds downloads to the site search (Smart Search). It finds title, description, file name – including its parts, so price-list-2026.pdf is found under “price” –, version and tags.

The result of a search for price list with the matching download
The search finds the download by title, file name or tag.

Setting up

  1. Check that the plugins Smart Search - Fileshelf and Content - Smart Search are enabled.
  2. Open Components → Smart Search and click Index once, so that existing downloads are added.

From then on Fileshelf keeps the index up to date itself: when a download is saved, published, unpublished or deleted, and when the access level or status of a category changes.

Who finds what

The search only shows a visitor downloads whose access level – and that of the main category – they have. Password-protected downloads are found; the file still comes only after the password.

Type, category (additional ones included), author, tag and language are available as search filters.

Deutsche Fassung

Media manager

The plugin FileSystem - Fileshelf shows the storage folder in the media manager as the area Downloads. So you see folders and files, upload files and create folders without FTP.

The media manager with the area Downloads and the folders of the categories
The area “Downloads” next to Joomla's local folders.

What differs from normal folders

Limit

The media manager only shows file types allowed in its own options (Media → Options). If extensions such as zip or docx are missing there, such files do not appear in the area although Fileshelf manages them. Add the extensions there if you want to see them in the media manager. New downloads are best created in the download form; files uploaded through the media manager can be chosen there under Or choose a file from the storage folder or adopted with the tools.

Deutsche Fassung

Tools

You reach the tools from the dashboard or the menu Components → Fileshelf → Tools. They are only available to users with the permission “Configure ACL & Options” on Fileshelf (Super Users and administrators with this permission).

The tools of Fileshelf in three groups: storage folder and files, try it out, cannot be undone
The tools in three groups; what cannot be undone stands apart.

The page has three groups: Storage folder and files, Try it out (the demo data) and Cannot be undone (reset counters, remove demo data). Each tool shows beforehand what it would do. It only runs once you tick the confirmation box and click the button; for the demo data and the counters both stand in a dialog that names the consequences.

What is wrong in the storage folder (misplaced or unlinked files) Fileshelf looks for only when you click Check the storage folder now under Check the storage folder at the top – one run for both tools, with many files that takes a moment. One run moves up to 300 files; the message says how many are left.

ToolWhen you need it
Demo dataYou want to see what Fileshelf looks like on your website before you create downloads of your own. “Create demo data” creates six categories (one with the password demo), twelve downloads with small sample files, two tags and, in the main menu, the menu item “Fileshelf demo” with one sub item each for the layouts list, cards and table, a single download and the latest downloads. “Remove demo data” removes exactly that again, files included. Whatever you changed since, or downloads of your own in a demo category, stay; the preview names them. The password demo is known – remove the demo data before the website goes public.
Reorder filesA file stays in its folder when its download gets another main category. The tool moves it into the folder of the main category; the links stay the same.
Adopt unlinked filesYou copied files into the storage folder by FTP or the media manager. Choose files and category; each file becomes an unpublished download with the file name as title. Files that do not pass the upload checks are left alone.
Check file detailsYou replaced a file by FTP. The tool reads each file again and stores size, type and checksum; it names missing files. It works in steps of 300 files; after each step Continue checking goes on.
Reset download countersSets the counters of all downloads, or of those of one main category, to 0. This cannot be undone.

Deutsche Fassung

Options and permissions

You reach the options with the button Options on the dashboard and in the list of downloads.

The options of Fileshelf with the tab Storage
The options, tab “Storage”.

Storage

OptionDefaultMeaning
Storage folderfileshelfRelative to the Joomla folder or an absolute path. Safest outside the web directory.
Allowed file typespdf, zip, docx, xlsx, pptx, jpg, jpeg, png, mp3, mp4Extensions, separated by commas. Programs and web pages are never accepted.
Allow software packagesNoAccepts archives with program code, such as extensions for Joomla, Shopware or WordPress (see Creating and maintaining downloads). In the backend only, and only with a protected storage folder.
Maximum file size (MB)1000: no limit of its own. The server's limit always applies.
DeliveryPHPPHP, X-Sendfile or X-Accel-Redirect (see Storage folder and self-test)

Downloads

OptionDefaultMeaning
Access through additional categoriesMain category only“Strictest”: the access levels of the additional categories must allow it as well.
Password valid for (minutes)1200: until the browser session ends.
VersionsYes, 10Version history of the downloads as with articles.

Display

Layout (list with category tree, cards, table), search and sorting, and which details the lists show: file type and size, version, date, number of downloads, tags – and whether locked downloads appear with a lock. Menu items and the module can choose each detail differently. Checksum shows the SHA-256 checksum of the file on the page of a download (default: off). Category Image shows the category's image at the top of the category and in the overview (default: on); Category image layout puts it beside the text (default, never cropped) or as a banner across the full width. Heading of the overview and Introduction of the overview stand above the categories of the download overview; a menu item can override both (see Downloads on the website).

Appearance

How Fileshelf fits into your template (see Fitting your template). Left empty, the colours and corners of the template apply.

Integration

Remove IDs from URLs (default: yes) and Enable custom fields as with articles.

Permissions

Permissions follow the pattern of articles and are inherited from the component through the category to the download: create, edit, edit own, edit state, delete. In addition:

Who may download on the website is decided by access levels (and a password, if any), not by permissions. The tools require the permission “Configure ACL & Options”.

Deutsche Fassung

Action log

Fileshelf writes to Joomla's action log. Under Users → User Actions Log you see who created, changed, published or deleted which download and when, and who set or removed a password. The filter Fileshelf hides everything else.

User Actions Log filtered to Fileshelf, with entries about downloads and an import
Entries of Fileshelf in the User Actions Log.

What is logged

Switching it on and off

On its first installation Fileshelf adds itself under Users → User Actions Log → Options → Extensions to log. If you take Fileshelf out there, it writes nothing more to the log; a later update does not change this setting. How long entries are kept is set in Joomla's plugin System - User Actions Log.

Deutsche Fassung

Free version and Pro version

Fileshelf comes as a Free version and a Pro version. The Free version is a complete product: everything this handbook describes without the note “(Pro)” belongs to it. The Pro version contains the whole Free version and adds plugins of its own.

What the Pro version adds

Each feature has a page of its own in this manual with “(Pro)” in its title. The Pro version creates three scheduled tasks during installation (retention, notifications, deletion periods).

Which version is installed?

From the Free to the Pro version

  1. Download the package of the Pro version.
  2. Install it under System → Install Extensions – simply over the existing Free version. Downloads, files and settings stay.
  3. Enter your download key under System → Update Sites or at the extension, so that updates of the Pro version arrive.

The Pro version has no licence switch: what is installed keeps running – also after the membership ends. The download key only controls the updates.

Back to the Free version

Install the package of the Free version over the Pro version. The plugins of the Pro version stay installed (Joomla removes no parts on a package update); uninstall them under System → Manage Extensions if you like.

Deutsche Fassung

Download statistics (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

The Pro version does not only count how often a file was fetched, it records every download: when, which file, whether it arrived complete. That is what the statistics are made of – without storing any IP address.

The page “Statistics”

Open it in the menu under Components → Fileshelf → Statistics, from the quick access of the dashboard or from the figure Hits.

The statistics page with period, totals, a bar chart per day and the most downloaded downloads
Downloads per day, dark the completed ones, light the interrupted ones.

In the download and on the dashboard

Every download has the tab Statistics with its last 30 days. The dashboard shows the figure Hits in four fields: today, last 7 days, last 30 days and all time. “All time” is the sum of the counters of all downloads, the same number as in “Most popular downloads”, imported counts included. “Open statistics” at the foot of the card leads here.

The Statistics tab of a download with totals and the chart of the last 30 days
The tab “Statistics” of a download.

What is counted

Privacy and retention

Fileshelf stores no IP address. Instead there is a value computed from the address and a key of the day; the key is deleted the next day. Downloads of one day can be related to each other (for limits), but never to an address again. For logged-in visitors the user is stored.

Every night the scheduled task Fileshelf - Retention of the download log adds up the downloads of the day before per day and download. The statistics read these daily numbers and compute only today from the single entries – so they stay fast even with millions of downloads. If the task did not run once, the statistics compute the missing days from the entries; they are just slower then.

Fileshelf keeps single downloads for 365 days; then the task deletes the single entries in small batches, and the statistics keep counting them through the daily numbers. Change the period in the task under System → Scheduled Tasks. When a download is deleted, its entries go with it.

Who sees the statistics

The permission View statistics in the options of Fileshelf (tab Permissions). Super Users always have it.

Deutsche Fassung

Versions and expiry date (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

When you replace the file of a download, the earlier file stays as a version. Visitors find it on the download page, with what changed. A download can also get an expiry date.

Adding a new version

  1. Open the download and upload the new file in the tab File and description (or choose one from the storage folder).
  2. Enter the new version label in the tab Versions under “About the file”, e.g. 2026.2.
  3. Write what is new under Changes in this version in the tab Versions.
  4. Save.

The earlier file moves to a subfolder _versions of its category folder and keeps its label and its changes. Tools and media manager treat it as in use.

The Versions tab with changes, expiry date and the list of earlier versions with their status
The tab “Versions”: changes, expiry date and earlier versions.

Managing earlier versions

Each earlier version has a label, changes, a counter of its own and a status:

Whether visitors may download earlier versions at all is set in the plugin Fileshelf - Versions (Earlier versions public, default: yes).

On the website

Download page with the section Versions: what is new in this version and an earlier version with a link
Below the file: what is new, and the earlier versions.

Expiry date

Enter a moment under Expires on in the tab Versions. From then on the download stays visible on the website but shows a lock saying it has expired. In the backend you can still download the file. Clear the field and the download is available again.

Unlike Finish Publishing (tab Publishing): there the download disappears from the website altogether.

Deutsche Fassung

Links and download by e-mail (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

Two ways to hand out a file on purpose: links that work without login and password, and downloads by e-mail address, where visitors get the file only after confirming their address.

  1. Open the download, tab Sharing, section Links.
  2. Choose under New link: Once (valid for one complete download) or Valid until a date (7 days without a date, optionally with a maximum number of downloads).
  3. Enter an address under Send to if you like – Fileshelf mails the link – and a note for yourself.
  4. Save. The link appears once in the message at the top; copy it.
The section Links in the tab Sharing with the switch for downloads by e-mail address, the fields for a new link and the list of links
The section “Links” in the tab “Sharing”.

Revoking: tick the link in the list Links of this download and save. It stops working at once.

Download by e-mail address

Switch on Only for an e-mail address in the tab Sharing under Links. Then:

  1. Visitors see a form instead of the button: e-mail address, name (optional) and consent to storing it.
  2. They get a mail with a confirmation link, valid for 48 hours.
  3. After confirming they get the download button. It works three times within 48 hours and only for this address. Opening the confirmation mail again gives the same link with the downloads left, not a new one.

The e-mail address replaces only this one hurdle. Everything else still applies: a download in a category for registered users stays reserved for them, a password has to be entered first, a membership plan or a download limit applies with the link, too. The form appears only if the visitor could reach the download without this hurdle.

Download page with the form: e-mail address, name, consent and the button Send link
The form on the download page.

In the plugin Fileshelf - Links you set: the validity in hours, the number of downloads per confirmation, the address of your privacy policy (linked in the consent) and the captcha. Without a choice of its own the captcha of the global configuration applies; if none is set there, Fileshelf picks an enabled captcha plugin on its first installation. An invisible field stops automated requests as well, the same address gets at most one mail for the same download every ten minutes, and the form accepts at most five requests per hour from one visitor.

The page “Links”

On the dashboard under Links: all links that still work and all confirmed addresses, with a CSV export. Because the page shows addresses, only Super Users and administrators with the permission “Configure ACL & Options” see it.

Edit the texts of both mails under System → Mail Templates (extension Fileshelf - Links). How long addresses are kept is described under Privacy.

Deutsche Fassung

Download limits (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

Limits say how often visitors may download – for example ten downloads a day for registered users, or three a month for a particular file.

The Limits page with two limits and the forms for user group, category and single download
The page “Limits”.

Adding a limit

On the dashboard under Limits (Super Users and administrators with the permission “Configure ACL & Options” only). There are three kinds:

Each limit has the number allowed and the period: per day, per week (from Monday), per month or in total. Periods follow the calendar in the time zone of the site.

How limits combine

In the plugin Fileshelf - Limits you choose what counts: only completed downloads (default) or every started one.

Deutsche Fassung

Notifications (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

Two kinds of mail: visitors hear about new versions, and you hear how often a download was fetched. Fileshelf sends both in the background – never while someone waits for a page.

Subscribing to new versions

Logged-in visitors see Subscribe to new versions on the download page. When the download gets a new file, they receive a mail with the new version label and a link to the page. Every mail has an unsubscribe link that works without logging in. The number of subscribers is shown in the tab Sharing, section Notifications.

Download reports

In the tab Sharing of a download, section Notifications, switch on Report downloads by mail and enter the recipients (empty: the author of the download). Instead of one mail per download a summary is sent, at most once in 24 hours.

The section Notifications in the tab Sharing with the switch, recipients and the number of subscribers
The section “Notifications” in the tab “Sharing”.

In the plugin Fileshelf - Notifications you set the throttle in hours and, optionally, an address that gets a report of all downloads.

Sending

The scheduled task Fileshelf - Send notifications sends what is due every 15 minutes. Fileshelf creates it during installation; you find it under System → Scheduled Tasks. The links in the mails never take the address of a request on the website – a visitor could forge it. They come from the global configuration (Live Site) or, if nothing is set there, from the address under which you last opened Fileshelf in the backend (Fileshelf notes it then, also when installing).

The scheduled tasks of Fileshelf: send notifications, retention of the download log, delete addresses after the retention
The three tasks of the Pro version.

Edit the texts of the mails under System → Mail Templates (extension Fileshelf - Notifications).

Deutsche Fassung

Privacy (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

The Pro version stores some personal data. This page says which, for how long, and how to answer requests for access and erasure.

What is stored

DataWhat forHow long
Download log: time, download, completed, for logged-in visitors the user; instead of the IP address a value that can only be related within the same dayStatistics, limits365 days as single entries, then only numbers per day without personal reference
E-mail address, name (optional), time of consent for downloads by e-mailConfirming and sending the download365 days (adjustable)
Links with an addressSending, validityup to 365 days after they expire
Subscriptions to new versions (user)Notificationuntil unsubscribed

The scheduled task Fileshelf - Delete addresses after the retention deletes daily what is older than the retention, and everything that belongs to deleted user accounts. Set the retention in the task.

Access and erasure

Fileshelf takes part in Joomla's privacy requests (Users → Privacy → Requests):

For this the plugin Privacy - Fileshelf has to be enabled.

Text for your privacy policy

A suggestion to adapt to your site – not legal advice:

Downloads. When you download a file, we store the time, the file and – if you are logged in – your user account, to count downloads and to apply download limits where they exist. We do not store your IP address; we derive a value from it that cannot be related to any address once the day is over. We delete single entries after 365 days.

Downloads by e-mail address. For some downloads we ask for your e-mail address and, optionally, your name. We send you a confirmation link and store address, name and the time of your consent for 365 days. The legal basis is your consent, which you can withdraw at any time.

Notifications. If you subscribe to new versions, we send you a mail when a new version is published. You can unsubscribe with the link in every mail.

Deutsche Fassung

Memberships with Membership Pro (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

With Membership Pro you sell memberships; Fileshelf binds downloads and categories to their plans. Members with a matching active plan download, everyone else is shown the way there: to the login, the subscription or the renewal. The bridge is tested with Membership Pro 4.7.1.

Assigning plans

You choose the plans in the download (tab Access, section Plans) and in the category (tab Plans). One or more are possible. Which plans apply:

  1. the plans of the download, if it has its own;
  2. otherwise the plans of the main category – or of the nearest one above it, because a category also covers its subcategories;
  3. otherwise the plans of the first additional category that has some.

Without plans a download needs no membership. With several plans one of them is enough; in the plugin Fileshelf - Membership Pro you can switch to “All plans are needed”.

The Plans tab of a download with the plan Premium selected
The plans of a download.

What visitors see

My downloads

Create a menu item of the type Fileshelf → Extension page and choose the page My downloads. Logged-in members see all downloads their membership opens, by category; guests go to the login.

The page My downloads with three manuals for members with the plan Basic
“My downloads” on the website.

Welcome mail

If you like, a member gets a mail as soon as their membership becomes active – with the downloads it opens and a link to “My downloads”. Switch on the Welcome mail in the plugin Fileshelf - Membership Pro. The mails are sent by the scheduled task Fileshelf - Send notifications; edit the text under System → Mail Templates.

When Membership Pro changes

When Membership Pro is installed, the dashboard of Fileshelf shows a tile Membership Pro as the last one of the quick access, with the version and the number of downloads and categories with plans. If its tables look different than expected after an update, downloads with plans stay locked – never open – and the tile names the reason. If Membership Pro is newer than the tested version, the tile says so; plans keep working.

When Membership Pro is not installed or switched off, there is no tile. If downloads or categories still have plans, they stay locked, and the dashboard reports it under Needs your attention with a link to the extensions. The form then shows the tab Plans only for entries that still have plans.

Deutsche Fassung

YOOtheme Pro (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

With YOOtheme Pro you design download areas in the page builder. Fileshelf brings dynamic content and an element of its own. Without YOOtheme Pro the plugin System - Fileshelf for YOOtheme Pro does nothing.

Dynamic content

Choose one of the sources of the group Fileshelf under Dynamic Content of an element:

A download offers title, description, link to the download page, download link, file type and size, version, category, earlier versions and – for locked downloads – the lock text and the way past the lock (password, login, membership), among others. The download link is empty as long as the visitor may not load the file; bind the lock text to a field next to it. Access and lock reasons are the same as on the pages of Fileshelf.

The element “Fileshelf Downloads”

For a ready list, drag the element Fileshelf Downloads onto the page. It shows the downloads of categories, the featured, the newest or the most downloaded ones – as list, cards or table, with button or lock as on the pages of Fileshelf.

A page with the element Fileshelf Downloads as a table with title, file, date and button
The element as a table.

Deutsche Fassung

JCE editor (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

If you work with the JCE editor (2.9 or newer), pick downloads right in the link dialog. The plugin JCE - Fileshelf links adds Fileshelf to the dialog; the button Fileshelf below the editor (see Editor button) works in JCE as well.

Select the spot or the word in the text, open the link dialog and expand Fileshelf in the tree. Below the categories you find the downloads; a click takes over the link. It always goes through Fileshelf – with counter and access check –, never straight to the file. You only see categories and downloads you may see yourself.

The JCE link dialog with the Fileshelf tree expanded and the price list selected
The Fileshelf tree in the link dialog.

Inserting a shortcode

Instead of a plain link, the tab Fileshelf inserts a shortcode: choose a download or a category in the tab Link, switch to the tab Fileshelf and choose the form – for a download link with file details, button or number of downloads, for a category list or cards. Insert puts the shortcode into the text; Fileshelf shows it with the current file, size and lock (see Shortcodes in articles).

The tab Fileshelf in the link dialog with the choice link with file details, button or number
The “Fileshelf” tab.

Deutsche Fassung

Download all (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

Above the list of a category with at least two downloads there is the button Download all (ZIP). It gives visitors all downloads of the category in one ZIP archive.

The category Forms with the button Download all (ZIP) above the list
The button above the list.

What goes into the archive

Every file is checked like a single download: access level, password, membership, limits. It is counted and kept in the statistics. What the visitor may not load is missing from the archive; the file README.txt in the archive names these downloads with the reason. If a limit applies, every file of the archive counts – so an archive cannot get round a limit.

Limits

In the plugin Fileshelf - Download all you set how many files (default 100) and how many megabytes (default 500) an archive holds at most; what no longer fits is named in the read-me. You can also hide the button there. The archive is built while it is sent and takes no space on the server.

Deutsche Fassung

Upload on the website (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

Logged-in visitors upload files on the website, for example dealers their documents. Every upload waits unpublished until you have checked and approved it.

Setting up

  1. In the category (tab Permissions) or under Options → Permissions, give the right user groups the permission Upload on the website.
  2. Create a menu item of the type Fileshelf → Extension page and choose the page Upload a file.

The form only offers categories the visitor may upload to. Whoever has the permission nowhere sees a note instead of the form; guests go to the login.

The form Upload a file with title, category, description and file
The form on the website.

What is checked

Every file runs through the same checks as in the backend: allowed file types, no executable content, Joomla's own checks. Images (JPG, PNG, GIF, WebP) are saved anew, so that nothing but the picture is kept. In the plugin Fileshelf - Upload on the website you set the largest file (default 20 MB) and the number of uploads per user and hour (default 5).

Checking and approving

Until it is approved, the file lies in the folder _quarantine of the storage folder; Fileshelf never delivers it from there, not even if someone publishes the download by hand. You find the waiting uploads on the dashboard under Approve uploads (permission “Edit State”). Whoever is denied this permission in a category does not see its uploads there and cannot approve them. The page shows type, size and folder of every file; you look at the file and decide:

When nothing waits, the page says whether uploading is set up at all and links what is missing: the menu item of the page “Upload a file” or a user group with the right “Upload on the website”.

The page Approve uploads with where files come from and wait, and what is still missing
The page “Approve uploads”: when nothing waits, it names what is still missing for uploads.

If you enter addresses under Tell about new uploads in the plugin, they get a mail about every new upload. The mails are sent by the scheduled task Fileshelf - Send notifications.

Many files at once in the backend

On the dashboard under Upload many files (permission “Create”) you choose many files at once or drop them onto the field. Every file becomes a download of its own with the common settings of the page: category, additional categories, status, access level and tags. Title and alias come from the file name (“Price_list_2026.pdf” becomes “Price list 2026”); if the alias already exists in the category, Fileshelf adds a number.

The files go to the server one after the other, so the size limit applies per file. Every file is checked as with a single upload. At the end every file shows whether its download was created (with a link) or why it was rejected; a rejected file leaves nothing behind. Without JavaScript the page sends all files at once and reports the result in one message.

The page Upload many files with the common settings and the result per file
“Upload many files”: the common settings on the left, the result per file on the right.

Deutsche Fassung

Switching from other download extensions (Pro)

Pro version. This feature is part of the Pro version of Fileshelf. What the Free version does is covered under Free version and Pro version.

The page Fileshelf → Import takes over categories, downloads, files and download counts from another download extension of the same site. The old extension stays as it is and keeps working: Fileshelf only reads, files are copied. Super Users see the page.

SourceWhat is taken over
Phoca Download 6Categories with image, downloads, counts, version, tags, license
jDownloads 4Categories, downloads, counts, version, tags, license, passwords; optionally the same file in several categories becomes one download
Dropfiles 6Categories with image, files, counts, version, tags, several categories per file
Membership ProThe documents of the plans, bound to their plans (see Memberships with Membership Pro)

If a source is not installed or its tables differ from the known version, the page says why and imports nothing.

How an import runs

  1. Choose Preview and import for the source. The preview shows the category tree and the first downloads with what will happen to them – nothing has changed yet.
  2. Choose where the categories go:
    • New category "Import from …" (default): it keeps the import together and stays unpublished until you have checked it.
    • Take the structure 1:1 (top level): the top categories of the source stand on the top level of Fileshelf, the tree stays as in the source. They start unpublished. If a category with the same address already exists there, the new one gets "-2" added.
    • Under an existing category: the top categories of the source go under the chosen category.
  3. Choose what is imported. At first everything is ticked. A category brings its subcategories and downloads; under Choose downloads one by one single downloads can be left out. If only a subcategory is chosen, its parent category comes along empty so the tree is right. A later import adds what is still missing and doubles nothing.
  4. Leave Take over the download counts ticked if the counts should go on.
  5. Start the import. It runs step by step; keep the page open until the report appears. You can cancel at any time; starting again continues.
Preview of the import from Phoca Download with category tree, first downloads and options
The preview before the import.

An import can be repeated: what was taken over is skipped; a taken-over download deleted since then comes back.

What is not taken over

Access levels that do not exist on this site become "Special". License texts go into the field License, which the import creates once.

The report

The report says what was taken over and what was skipped, and leads through the next steps.

Report of the import with counts, aftercare and checklist
The report with aftercare and checklist.

Uninstall the old extension only after you have checked the report.

The import and its aftercare also change articles, modules and menu items. Fileshelf asks for the permission to configure Fileshelf for it (Super User or “Configure ACL & Options”), not the permissions of articles or menus – so give the import only to people who know the whole website. Category images are taken only as image files (jpg, png, gif, webp).

Deutsche Fassung

For developers: events

Fileshelf can be extended with plugins of your own – exactly the way the Pro version does it. Fileshelf loads all plugins of the group fileshelf before it fires its events. The classes are in Graup\Component\Fileshelf\Administrator\Event.

The events are Fileshelf's public interface. Their names, arguments and public methods only change with a new major version.

The events

EventClassWhenWhat a plugin can do
onFileshelfResolveTokenResolveTokenEventThe request carries a token (t).grant() skips access level and password, reject() locks with reason token.
onFileshelfAccessAccessEventAfter status, token, access level and password; also in lists (context list).deny($reason, $message, $redirect) locks. In lists, never count or write.
onFileshelfBeforeSendBeforeSendEventAccess granted, before counting.setFile() swaps the file; Fileshelf checks it against the storage again.
onFileshelfAfterCountAfterCountEventAfter counting, before the first byte.Notification only; getRequestId() links it to the next event.
onFileshelfAfterSendAfterSendEventAfter sending, also when the visitor broke off.isCompleted(), getBytesSent(), getMethod().
onFileshelfDownloadDisplayDownloadDisplayEventDownload page, per position.addHtml() with finished, escaped HTML.
onFileshelfDashboardDashboardEventBackend dashboard.addTile($id, $title, $html, $order, $area) ($area: status, content, insight or setup); from 1.8.0 addAttention($id, $text, $link, $count, $label) for “Needs your attention”, only for a need for action with a way out; check your own right first.
onFileshelfAdminPagesAdminPagesEventDashboard and every plugin page.addPage($name, $title, $right, $icon) announces a page view=page&page=…; Fileshelf checks the right.
onFileshelfAdminPageAdminPageEventThe plugin page is shown.addHtml(), addAction($action, $label, $icon, $confirm).
onFileshelfAdminActionAdminActionEventAn action of the page runs; token, right and confirmation are checked.handled($message, $type).
onFileshelfFilesInUseFilesInUseEventTools, download form and media manager ask which files of the storage belong to plugins.claim($path) for your own files (e.g. older versions); they never count as unlinked.
onFileshelfSitePagesSitePagesEventMenu item “Extension page” and every call of such a page.addPage($name, $title, $login) announces a website page; with $login Fileshelf sends guests to the login.
onFileshelfSitePageSitePageEventThe page is shown.addHtml() with escaped HTML, setTitle(), getOptions() (menu item).
onFileshelfSiteActionSiteActionEventA form of the page was sent; token, page and login are checked.handled($message, $type, $redirect); Fileshelf escapes the message.
onFileshelfCategoryDisplayCategoryDisplayEventCategory page, positions beforeList and afterList.addHtml() with escaped HTML; getTotal() gives the number of listed downloads.
onFileshelfActionLogActionLogEventSince 1.3.0: Fileshelf or a plugin reports an action for the action log (password, approval, import).Message only: getAction(), getKind() (download, category, import), getItemId(), getTitle(), getDetails(). The plugin "Action Log - Fileshelf" writes it.
onFileshelfImportSourcesImportSourcesEvent (Pro)Since 1.3.0: the page "Import" collects its sources.addSource() with a class implementing SourceInterface of the import plugin (categories, downloads, table check).
onFileshelfResolveScopesResolveScopesEventFired by the Pro version (limits) as soon as a limit uses a scope type of another plugin; the Free version does not fire it.addScope($type, $id).

The download comes as a read-only DownloadRecord (without the password hash), never as a table object. Reasons of your own start with x-<plugin>-; the website then shows only the message.

Example

final class Example extends CMSPlugin implements SubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return ['onFileshelfAccess' => 'onAccess'];
    }

    public function onAccess(AccessEvent $event): void
    {
        if ($event->getContext() !== 'list' && !$this->allowed($event->getUser())) {
            $event->deny('x-example-hours', 'Downloads are possible on working days only.');
        }
    }
}

Plugins add form tabs to the download as with articles, with onContentPrepareForm (form com_fileshelf.download), and store them in onContentAfterSave (context com_fileshelf.download).

Pages on the website

With the menu item type Fileshelf → Extension page a plugin gets a page of its own on the website, without a component of its own. Forms of that page send task=extension.action, page, action and the form token to Route::_('index.php?option=com_fileshelf') – always build the address with Route::_(), a relative address is wrong under search engine friendly URLs. Plugins add tabs to the category form with onContentPrepareForm on the form com_categories.categorycom_fileshelf; Fileshelf loads the group fileshelf for it.

Deutsche Fassung

Changelog

This changelog lists every released version of Fileshelf, the most recent first.

This page is generated automatically from the product's changelog file when a release is made. Changes made by hand are lost at the next synchronisation.

Version 1.10.1 – 12 November 2026

Changed

Fixed

Version 1.10.0 – 12 November 2026

Added

Changed

Fixed

Version 1.9.0 – 12 November 2026

Added

Changed

Fixed

Notes

Version 1.8.1 – 12 November 2026

Fixed

Version 1.8.0 – 11 November 2026

Added

Fixed

Version 1.7.0 – 11 November 2026

Added

Changed

Version 1.6.0 – 11 November 2026

Added

Changed

Version 1.5.1 – 11 November 2026

Fixed

Version 1.5.0 – 11 November 2026

Security

Changed

Version 1.4.0 – 10 November 2026

Added

Changed

Fixed

Version 1.3.0 – 10 November 2026

Added

Version 1.2.0 – 10 November 2026

Added

Version 1.1.0 – 10 November 2026

Added

Version 1.0.0 – 9 November 2026

Added

Deutsche Fassung