AJAX & UX
How AJAX Works
Smart Content Filter uses Joomla's com_ajax endpoint. The frontend script sends the module ID, category or categories, filters, sort option, view mode, page offset, and load-more page. The server returns updated article card HTML using that module instance's saved settings.
Loading Modes
- Load More Button: Appends the next batch of articles. The current page is stored in the URL when shareable state is enabled.
- Infinite Scroll: Loads more articles automatically near the bottom of the list.
- Prefetch Next Page: Optionally preloads the next page in the background (Article Arrangement).
URL State & Persistence
- Shareable Filter URLs (Filters tab, Filter Panel): Stores category, search, tag(s), custom fields, author, date, sort, view mode, and load-more page in the query string as
scf_{moduleId}_*parameters. - Common keys:
cat,search,tag,field,field2,author,from,to,sort,view,page. - Only filters that differ from their defaults are written. A single tag filter becomes
?scf_143_tag=16. Multi-category becomes?scf_143_cat=145,146. - Reset clears that module's filter parameters from the URL and leaves unrelated query parameters untouched.
- When Lock Default Filters is on, locked category, tag, or custom field values stay applied even if a shared URL tries to change them.
- Filtered views can be bookmarked, shared, and restored on reload.
- Grid/List preference is also stored in a per-module cookie.
- To stop writing filter parameters altogether, set Shareable Filter URLs to No. Filtered views can then no longer be bookmarked or preselected by link.
UX Options
- Skeleton Loading and Filter Transitions (Advanced)
- Sticky Filter Toolbar, Empty State Message, and Filters Display (Filters)
- Output JSON-LD Schema (Advanced)
Multiple Instances
Each module instance uses its own wrapper, module ID, AJAX state, CSS variables, and URL parameters (scf_{id}_*). Multiple instances can run on the same page independently.