Joomla Articles

This content was generated with the assistance of AI and should be verified against the official Joomla documentation before being relied on in production.

This sub-section’s Joomla bibliography lists the reference material consulted while preparing these pages.

This page describes how articles are written and managed in the Joomla administrator. It was written against Joomla 6.2.x (released on 13 October 2026; PHP 8.3 or later) and its facts were checked on 2026-10-30 against the Joomla! User Guide (https://guide.joomla.org/), the Joomla 6.2 release announcement and the 6.2 source tree. The screens are the same in the 5.4 line, which only receives security fixes; the differences introduced by 6.2 (the editor, the link picker, the Read More button and the image CSS class fields) are called out where they apply.

An article is the basic unit of content in Joomla. It belongs to exactly one category, has an access level and an optional language, and is shown on the site through a menu item (a single article, a category blog or list, the featured articles view, the archive) or through a module. The component behind articles is com_content. Articles are used by four kinds of people: the author or editor who writes them, the site builder who decides how they are laid out, the administrator who controls who may publish, and the developer who reads or writes them through the Web Services API.

The running example is the Tallpine Hiking Club, a fictitious mountain club. Its volunteers write trail reports in the nested categories Trails › Alpine and Trails › Valley, and board announcements in News. Categories, tags, custom fields and menu items have their own pages: see Categories and Tags, Custom Fields, Menus and Menu Items and Media Manager. Access levels and permissions are in Users, Groups, Access Levels and ACL, and approval flows in Workflows.

The Articles list

Content → Articles opens the list of all articles. It is the working screen for editors: it shows the status icon, title, alias, category, access level, author, language (on multilingual sites), creation date, hit count and ID of each article. A yellow star in the Featured column marks a featured article, and a padlock next to a title marks an article that is checked out by somebody. The same list is reached from the Content dashboard, and the article form is opened by clicking a title or the New button.

Filters and the Actions menu

The filter bar narrows the list as soon as a filter changes, and Joomla remembers the filters for the rest of the session. The documented filters are:

  • Featured: featured, unfeatured, or both.

  • Status: only Published and Unpublished articles are shown by default. Trashed and Archived articles appear only when the status filter is set to the matching value or to All. This is why a freshly archived article seems to have vanished.

  • Category: includes subcategories unless Max Levels limits the depth, and several categories from different trees can be selected together.

  • Access: Public, Guest, Registered, Special or Super Users, or any custom access level.

  • Author: none, Created by me, or a named author.

  • Language (multilingual sites only) and Tag (several tags can be chosen).

The Actions button in the toolbar applies an operation to every ticked row: publish, unpublish, feature, unfeature, archive, check in, trash and batch. The Batch dialog changes the language, access level, tag or workflow stage of many articles at once and copies or moves them to another category; it is the quickest way to move the Tallpine winter reports from News into Trails › Alpine. Trashed articles are only removed from the database by the Delete button, which appears when the list is filtered to Trashed, after a confirmation, which is why trashing is the safe default for unwanted content.

stateDiagram-v2 [*] --> Unpublished: Save with Status Unpublished [*] --> Published: Save with Status Published Unpublished --> Published: Publish Published --> Unpublished: Unpublish Published --> Archived: Archive Archived --> Published: Change Status back Published --> Trashed: Trash Unpublished --> Trashed: Trash Archived --> Trashed: Trash Trashed --> Published: Restore by setting Status Trashed --> [*]: Delete Published --> Expired: Finish Publishing date passes Expired --> Published: Clear or extend the date

The diagram shows the four stored statuses (Published, Unpublished, Archived, Trashed). Expired is not a stored status: it is a published article whose Finish Publishing date lies in the past, and the list shows it as "Published, but has Expired". When the editorial workflow is switched on, the status is changed through workflow transitions instead of directly; see Workflows.

Creating an article

Content → Articles → New opens the Articles: New form. The form has these tabs: Content, Images and Links, Options, Publishing, Metadata and Permissions (the last only for users who may change permissions; the tab names and the Associations and Workflow tabs depend on the installed features). The toolbar of the form offers:

  • Save, which saves and keeps the form open. Saving often is recommended, because a session timeout loses unsaved text.

  • Save & Close, which saves, releases the check-out lock and returns to the list. Its drop-down holds Save & New, Save to Menu (saves and opens Menus: New Item with the article pre-selected) and Save as Copy (creates a copy whose title and alias get a number appended, for example -2, and leaves the copy open for editing).

  • Versions, Preview, Accessibility Check, Permissions and Help, described in the sections below.

  • Close, which discards unsaved changes and releases the lock.

The fields of the Content tab

Field Behaviour

Title

Required and the only field that must contain text. Titles do not have to be unique, but a unique title makes the list easier to search.

Alias

Normally left blank. Joomla generates it from the title (lower case, non-alphanumeric characters turned into dashes). The alias forms the last segment of the SEF URL, so changing the alias of a published article breaks old links unless a redirect is created (see SEO, SEF URLs, Redirects and Schema.org). Aliases must be unique within a category: saving a duplicate fails with an error until the alias is changed.

Category

Required, defaulting to Uncategorised. The drop-down is searchable by typing part of the name.

Status

Published (the default), Unpublished, Archived or Trashed.

Featured

A yes/no switch. A featured article appears in the Featured Articles view (see below).

Access

The access level allowed to see the article: Public, Guest, Registered, Special, Super Users or a custom level such as the Tallpine Trail Warden level.

Language

All or one of the installed content languages. It matters on multilingual sites only.

Tags

Existing tags are picked from a list, and a new tag is created by typing it and pressing Enter. To avoid near-duplicates (family-friendly, Family friendly), create tags in the Tags component first.

Version Note

A free-text comment stored with the version created by this save. It is shown in the Versions dialog and cleared after saving.

Note

An internal note shown under the title in the Articles list, never on the site.

Below these fields sits the editor, and the custom fields assigned to the article’s category (or to all categories) are shown on their own tabs or in the Content tab, depending on the field group. Custom fields are stored separately from the article text, so they are not part of the saved versions (see below).

The editor

Joomla ships two editors in the core: Editor - TinyMCE (the default, a visual editor) and Editor - CodeMirror (a plain code editor), and a third option Editor - None (a plain textarea). The editor used for a user is chosen in Users → Manage → (user) → Basic Settings → Editor, and the site-wide default in System → Global Configuration → Site → Default Editor. TinyMCE is the plugin plg_editors_tinymce; the 6.2 source tree depends on TinyMCE 8 (the tinymce dependency of the 6.2 development branch is ^8.9.0). The release announcement for 6.2 mentions only that TinyMCE itself was updated.

What 6.2 changed

According to the Joomla 6.2 release announcement, the editor received these changes:

  • Media Manager integration: the image and media picker of the editor opens Joomla’s own Media Manager, so the same folders, the same upload limits and the same image management apply as everywhere else in the administrator (see Media Manager).

  • A unified link picker: one modal handles link insertion for the Article, Contact and Menu buttons, where previously each button opened its own modal.

  • A Read More button in the TinyMCE toolbar that inserts the article break.

  • Text filtering: TinyMCE uses Joomla’s text filter configuration by default, instead of its own valid-elements defaults.

  • Corrections to untranslated toolbar-builder buttons.

The text-filter point deserves care, because it is the commonest cause of "my markup disappears". Joomla filters the HTML of an article on save according to the Text Filters tab of the Global Configuration, per user group: the Guest, Public and Registered groups default to No HTML, other groups to the Default Forbidden List, and Super Users are not filtered. The TinyMCE plugin has its own Prohibited Elements, Valid Elements and Extended Valid Elements settings and a Use Joomla Text Filter switch; turning the switch on hides those three fields and makes the global filters decisive. Elements such as script, applet and iframe are removed from the editor’s default list whatever other settings say, so an embedded map or video may need the plugin settings or the dedicated embed mechanism rather than raw markup. A subtle trap: content written with Editor - None, then re-saved in TinyMCE, loses filtered tags without any warning.

Toolbars and toolsets

TinyMCE has three toolsets, assigned to user groups on the plugin’s edit page. Toolset 0 is the most extensive (by default Administrator, Editor and Super Users), toolset 1 is the middle one (Manager and Registered) and toolset 2 is minimal (Public, for public submission forms). Two toolbars are visible by default and an ellipsis at the end of the second one reveals more buttons. Toggle Editor switches between the visual view and the underlying HTML.

Inserting content

The Insert menu adds an external link, image or media item (the editor asks for a URL). The CMS Content menu inserts items from inside the site:

  • Article: a link to another article, chosen from a list instead of typed, so it survives an alias change.

  • Contact: a link to a contact.

  • Field: a placeholder for a custom field value.

  • Media: a file from the Media Manager.

  • Menu: a link to a menu item.

  • Page Break: splits a long article into pages, with a page title and a table-of-contents alias.

  • Read More: inserts the separator between intro text and full text at the cursor, best placed at a paragraph break.

Linking to an article through the picker, instead of pasting its URL, lets Joomla build the correct SEF URL for the active menu structure and language, which is why trail reports linked from news items stay valid when a menu is renamed.

Intro text and full text

Joomla stores an article’s body in two database columns, introtext and fulltext, of the table #__content. The editor shows them as one document. The Read More separator is the line between them; in the editor’s HTML view it is a single element:

<p>The Tallpine summer programme starts on 1 June with the Lakeside Loop.</p>
<hr id="system-readmore">
<p>Meet at the Valley station at 08:30. Bring water, a rain jacket and the signed
waiver. Dogs are welcome on the first section only.</p>

When the article is saved, Joomla splits the text at the system-readmore rule: everything above it becomes the intro text and everything below the full text. If there is no separator, the whole body is intro text. This has several consequences:

  • Blog, featured and archive views show the intro text and a Read more button that leads to the single article, whose title is part of the button label unless the Read More with Title option is switched off. The number of characters shown in list-style layouts is controlled by Read More Limit (characters), which defaults to 100.

  • The single article view shows intro text followed by full text. The article option Intro Text can hide the intro text on the single article page, which is useful when the intro is a teaser repeated from the body.

  • Partial access restriction: text without a separator counts as intro text and is visible to everyone, so a members-only article meant to give guests a free preview needs a break after the first paragraph, with the article’s access set to Registered. The Read more link of a restricted article then asks guests to log in or register.

The wording of the button can be changed for one article in the Read More Text field of the Options tab. To change it for the whole site, add a language override for the key JGLOBAL_READ_MORE_TITLE, keeping the %s placeholder that receives the article title (language overrides are described in Language Files and Internationalisation):

; administrator/language/overrides/en-GB.override.ini (created by System > Language Overrides)
JGLOBAL_READ_MORE_TITLE="Full trail report: %s"

This tab sets an intro image, a full article image and up to three links in predefined places. It matters most when the article is shown in a category blog, where the intro image appears above the title. Administrators may hide the tab from some editors in the Articles options.

  • Intro Image: optional; used in blog and list layouts. Without it, no image is shown.

  • Full Article Image: shown at the top of the full article; it has the same fields as the intro image.

  • For each image: Image Description (Alt Text) for screen readers, a Decorative Image checkbox (when ticked, an empty alt attribute is written, which tells assistive technology to skip the image), Image Class (defaults to left, which floats the image; float classes have no effect on grid or flex items) and Image Caption. A caption should add context, not repeat the alt text, or screen readers announce the same words twice. An image with no description and without the decorative checkbox can fail accessibility tests.

  • Joomla 6.2 adds separate CSS class fields for the image and for its surrounding figure element, in both intro and full article images, so a template can style the wrapper without a layout override.

  • Link A, Link B and Link C: each has a URL (the full URL, even for the same site), a link text and a URL Target Window: use global (open in the parent window), parent window, new window, popup or modal. The parent window is the preferred choice, because the Back button still works and mobile users are not confused by a hidden new window. The position of the links relative to the text is set by Position of the Links on the Options tab.

Images chosen here come from the Media Manager, so the folder, the allowed file types and the maximum upload size are configured there, not in the article. An image inserted in the body with the editor, in contrast, is plain HTML in the article text and is not tracked by the article form: deleting the file later leaves a broken image.

The Publishing tab

The Publishing tab controls when an article is visible and who is credited with it.

  • Start Publishing: set automatically when the article is first saved; change it to a future date and time to hold the article back (an embargo).

  • Finish Publishing: blank by default. A date in the future makes the article disappear from the site at that moment; the list then shows "Published, but has Expired". Clearing the field republishes the article.

  • Start Featured and End Featured: shown only for featured articles, they define the period in which the article appears in the Featured Articles view. They are not saved if the article is not featured, and an article whose featured period ended stays published and visible elsewhere ("Featured, but has Expired").

  • Created Date: set on first save and editable, which allows articles to be sorted into a different creation order.

  • Created By and Created by Alias: the first is picked with the user dialog and defaults to the author; the alias replaces the username in the article information block. Use Preview to check the result.

  • Informational fields: Modified Date, Modified By, Revision and Hits are read-only, as is the article ID.

  • Meta Description: documented as part of the Publishing panel; when empty, Joomla falls back to the single article menu item’s description and then to the site description.

All dates are entered in the user’s time zone and stored in UTC, so a Tallpine editor in Zurich who schedules a post for 08:00 sees 08:00 even though the database holds 06:00 or 07:00 depending on daylight saving time. Publishing and expiring happen when a visitor requests the page (there is no cron job for it), so a page cached by a caching plugin or a reverse proxy may show the old state until the cache expires; see Caching and Performance.

Access, language and metadata

The Access level hides an article from visitors who do not belong to it, both in the article itself and in lists. The categories must be public for their menu items to appear to anonymous visitors. The Unauthorised Links option decides whether links to registered-only articles are shown to guests; it can be set globally, or per menu item for category blogs and the featured articles view. Access levels are explained in Users, Groups, Access Levels and ACL.

Language assigns the article to one content language, or to All. On a multilingual site the Associations tab links the English and German versions of the same trail report, so that the language switcher leads from one to the other; see Multilingual Sites.

The Metadata tab holds the Robots instruction (the default "Use Global" adds no robots tag), Author and Rights tags. The Keywords field is not used by Joomla core and search engines no longer use it for ranking. To control crawlers site-wide, edit robots.txt in the site root.

Article options: global, per article and per menu item

Many display settings of an article exist at three levels, and understanding which one wins is the main skill of a site builder.

flowchart TD G["Global: Content > Articles > Options<br/>(com_content parameters)"] A["Article: Options tab<br/>(attribs of the article)"] M["Menu item: Options tab<br/>(single article, blog, list, featured)"] R[Rendered article or blog] G -->|"default for everything"| R A -->|"overrides the global value<br/>when the article is shown alone"| R M -->|"overrides global and, for blog and list<br/>layouts, article, unless Use Article Settings"| R

The rules, as the User Guide documents them:

  • Global values live in Content → Articles → Options (the Options button of the Articles list). Choosing Use Global in an article field means "take the value from here".

  • An article value applies when the article is displayed on its own, and in blog views when the menu item is set to Use Article Settings.

  • A menu item of a blog or list type has its own options and normally wins for the articles it shows. Two settings, Linked Titles and Unauthorised Links, depend on the menu item explicitly: the article’s own value applies only when the menu item says Use Article Settings.

The Options tab of the article is organised in panels:

Panel Fields

Layout

Layout (Use Global, Default, or any named layout override from the active template, see Template Overrides and Alternative Layouts); Title; Linked Titles; Tags; Intro Text; Position of Article Info (above, below or split, where Hits moves below the text); Article Info Title.

Category

Category, Link Category, Parent Category, Link Parent Category.

Associations

Multilingual sites only: Associations (show the list of language versions) and Use Image Flags (flags instead of language codes).

Author

Author and Link to Author’s Contact Page, which requires a contact linked to the user.

Date

Create Date and Modify Date are hidden by default; Publish Date is shown by default.

Options

Navigation (Previous and Next buttons), Hits, Unauthorised Links, Position of the Links (Links A, B and C above or below the text, or hidden), Read More Text and Browser Page Title (an alternative title for the browser tab and search engines, which defaults to the article title).

The same Articles Options screen also holds the settings that govern editing: which tabs and fields editors see, the Editing Layout tab with the version limit (below), the default access of new articles and the permission rules of the component. Because Use Global is the default for almost every field, a change in Content → Articles → Options affects every article that has not overridden it, which is the right place to set site-wide conventions such as hiding the author on the Tallpine site while showing it on the News blog through its menu item.

Versions and content history

Every time an article is saved in the edit form, Joomla stores a version of it. The Versions button of the toolbar opens a dialog that lists the saved versions with these columns: a checkbox, the Date (a star marks the current version, and clicking the date previews it), the Version Note, Keep Forever, the Author and the Character Count (which includes the database column names).

The toolbar of the dialog offers five operations:

  • Restore: replaces the current article with the selected version and reloads the form with that text in the editor. Nothing is saved until the form itself is saved.

  • Preview: opens the version in a separate window.

  • Compare: select two versions and a window shows a table with the field name, the older and the newer value, and the differences highlighted.

  • Keep On/Off: toggles Keep Forever.

  • Delete: removes the selected versions only, not the article.

How many versions are kept is a setting of Content → Articles → Options → Editing Layout (the default is 10; the setting belongs to that screen, not to the Options tab of the article). When a save would exceed the limit, the oldest version is deleted. A version marked Keep Forever is not counted towards the limit and is never deleted automatically. History is also available for categories, contacts, banners and clients, news feeds and user notes. Custom fields are not stored in the versions, so restoring a trail report does not restore its distance-km or difficulty values.

A practical convention for the Tallpine editors is to write a version note on each substantial save ("Added 2026 winter closure"), and to tick Keep Forever on the version that was approved by the board.

Check-in and check-out

To prevent two editors from overwriting each other, Joomla locks an article while it is open in the edit form. The table row has a checked_out column (the user ID) and a checked_out_time column. The lock is set when the form opens and cleared when it is closed with Save & Close or Close. If the form is left in another way (the browser Back button, a closed tab, an expired session), the lock stays and the article is shown with a padlock; hovering over the padlock shows who holds the lock. The last editor can keep editing without checking in.

Who can release a lock:

  • The editor who holds it, by opening the article and closing it properly.

  • A Super User or Administrator, by clicking the padlock for one item, or by ticking several articles and choosing Check-in in the Actions menu.

  • System → Maintenance → Global Check-in, available to Super Users and Administrators, lists every table that has locked rows with their counts. Selecting a table and choosing Check-in releases all locks in it, whoever holds them.

Global Check-in is a blunt instrument. If it is used while a colleague is editing, two people can work on the same article, and whoever saves last wins. Modules, categories and other components use the same mechanism, so stale locks can occur there too. The locks can be inspected with a query (run it against the database of a development copy, adjusting the prefix):

SELECT id, title, checked_out, checked_out_time
FROM #__content
WHERE checked_out IS NOT NULL AND checked_out > 0
ORDER BY checked_out_time;

Check-in is not security: it is a courtesy lock based on the database, and anybody with the edit permission who bypasses the form (for example through the Web Services API) is not stopped by it.

Content → Featured Articles lists every article that is marked as featured. Any article of any category can be featured: use the Featured switch of the form, click the star icon in the Articles list, or select several rows and choose Actions → Feature. Featuring does not copy or move the article; it only marks it, which is why the same article can appear in a category blog and in the featured view.

On the site, the featured view is the menu item type Articles → Featured Articles, normally the home page of the site. Its Blog Layout tab sets the number of leading, intro and link articles, the columns and the ordering, for example Featured Articles Order (the order dragged together on the Featured Articles page) or Most Recent First. Without a custom order, the view uses ID descending, so the newest article appears first. The Start Featured and End Featured dates described above let the Tallpine home page show the "Hike of the month" article only during that month, without any editor having to remember to unfeature it.

Archived articles

Archiving takes an article out of the active list while keeping it available. To archive, select the articles in the list and choose Actions → Archive, or set Status to Archived in the form. Archiving does not unpublish the article: its direct URL still works, and a single-article menu item that points to it still resolves. Archived articles are hidden from the default list, and the status filter must be set to Archived (or All) to find them. To restore one, change its status back to Published.

On the site, two items expose the archive:

  • the menu item type Articles → Archived Articles, with month and year filters and a list limit from 5 to 100 or All (avoid All on large archives, because it can slow the page or cause server errors);

  • the module Articles - Archived, which can be placed in any template position (see Modules and Positions).

Logged-in users with front-end editing permission can also archive articles from the site.

Previewing and accessibility checking

The Preview button of the form shows the saved version of the article in a popup, not the unsaved edits, so save first. If the popup says that the page cannot be found, log in to the front end and try again, because the preview uses the front-end session. The Accessibility Check button runs the built-in checker over the article text and reports problems such as missing alt text or skipped heading levels; it is described on its own User Guide page.

Front-end editing

Users who have the Edit or Edit Own permission can edit an article from the site: an edit icon appears next to the article, and users who may create articles get a Create an Article menu item type (Articles → Create Article). The form is a reduced version of the administrator form, uses the same editor and the same filters, and respects the same locks and versions. Front-end editing is how Tallpine hike leaders submit a report without entering the administrator; the Author group may create articles and an Editor may edit any article.

Creating articles through the Web Services API

Articles are one of the resources of the Web Services API (see Web Services API). With an API token of a user who may create articles, a trail report can be created from a script. The token is read from the environment:

export TALLPINE_API_TOKEN="CHANGE_ME"   # token of an API user, never committed

curl -s -X POST "https://tallpine.example.org/api/index.php/v1/content/articles" \
  -H "Authorization: Bearer ${TALLPINE_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/vnd.api+json" \
  -d '{
        "title": "Lakeside Loop: trail report",
        "alias": "lakeside-loop-trail-report",
        "catid": 12,
        "state": 1,
        "access": 1,
        "language": "*",
        "articletext": "<p>Teaser.</p><hr id=\"system-readmore\"><p>Full report.</p>"
      }'

The payload uses the same field names as the database (catid, state, access, language), and the single field articletext is split into intro text and full text at the read-more rule, exactly as in the editor. The category ID (here 12 stands for Trails › Alpine) differs on every site.

Common errors and pitfalls

  • Alias already in use: two articles in the same category cannot share an alias. Rename one, or use Save as Copy and edit the alias of the copy.

  • Markup disappears on save: the text filter of the user’s group, or the TinyMCE prohibited elements, removed it. Check the group in Global Configuration → Text Filters and the Use Joomla Text Filter switch of the plugin. Only Super Users are exempt.

  • The article is "gone": it is Archived or Trashed, and the default list hides both.

  • The article is locked: somebody left the form without closing it. Ask a Super User to check it in rather than using Global Check-in during working hours.

  • The article is published but invisible: the access level excludes the visitor, the category is unpublished or not public, the start date is in the future, the finish date has passed, or the language does not match.

  • Wrong options applied: a menu item overrides the article options. Look at the menu item first.

  • Lost custom field values after a restore: custom fields are not part of the versions.

  • Large Archive page: the All list limit on the archived articles menu item loads every article.

  • Images broken after tidying the media folder: images placed in the text are plain HTML paths.

Security notes

  • Give editors the lowest toolset and the Default Forbidden List filter that fits; do not give Super User rights to authors. Raw HTML permission is the most powerful content permission, because cross-site scripting through an article executes in the browser of every visitor, including administrators.

  • Never disable the text filter for a group that is not fully trusted, and do not switch to Editor - None to bypass it: the global filter still applies on save.

  • Access levels hide articles from lists and pages, but media files in images/ are public URLs. A members-only PDF must not live in a public folder if its URL must stay secret.

  • Preview, Accessibility Check and the version dialogs require the edit permission; version history can reveal text that was removed from the live article, so restrict the Permissions of the component for users who should not see it.

  • API tokens create articles with the permissions of their user; use a dedicated user with the Author group for integrations and keep the token in an environment variable or a secret store.

Version notes and book corrections

Version Change relevant to articles

Joomla 5.4

Last 5.x release line; it receives security fixes only until October 2027.

Joomla 6.1

A Proof-of-Work captcha is added, which can protect front-end submission forms.

Joomla 6.2

The TinyMCE editor uses the Media Manager, a unified link picker, a Read More button and the global text filters by default; intro and full images get CSS class fields for image and figure; subcategory images can be shown in category lists and blogs; categories are no longer shown as empty when their articles are scheduled for the future.

Older books and tutorials such as Joomla! 4 Masterclass (Packt, 2023) describe the Joomla 4 editor and Media Manager. Since 6.2 the image picker opens the Media Manager, the Article, Contact and Menu buttons share one link picker and Read More is also a toolbar button. Joomla 4 is end of life since October 2025, and links in older material to docs.joomla.org/J4.x pages point to a legacy wiki; the current end-user documentation is the Joomla! User Guide. Statements in older sources about jQuery being part of the core, or about filling the Keywords metadata field to help search engines, no longer apply: Joomla core does not use the keywords field.