Frontend Edit 

Extension key

xima_typo3_frontend_edit

Package name

xima/xima-typo3-frontend-edit

Version

main

Language

en

Author

Konrad Michalik & contributors

License

This extension documentation is published under the CC BY-NC-SA 4.0 (Creative Commons) license.


Frontend Edit Logo

This TYPO3 extension adds lightweight editing tools to the frontend, allowing backend users to edit, hide, delete, and reorder content elements and pages without leaving the site.


Introduction 

A quick overview about the main features provided by this extension.

How it works 

A detailed explanation of the inner workings of the extension.

Installation 

Instructions on how to install this extension and which TYPO3 and PHP versions are currently supported.

Configuration 

Learn how to configure the extension in various ways.

Usage 

Learn how to use the Edit Menu and the Toolbar.

Developer corner 

A quick overview of the possibilities for extending the extension

Delineation 

How this extension compares to similar extensions like visual_editor, feedit, and others.

FAQ 

A collection of frequently asked questions.

Migration 

A guide to migrate from version 1.x to version 2.x.

Introduction 

What does it do? 

This extension adds editing tools to the frontend, allowing backend users to edit, hide, delete, and reorder content elements and pages without leaving the site.

Frontend Edit Preview

The extension injects a small JavaScript into the frontend that generates action links to the TYPO3 backend, bridging the gap between frontend preview and backend editing.

Features 

  • Edit Menu - Quick access to edit, hide, delete, and move content elements
  • Toolbar - Page-level actions and toggle for frontend editing
  • Site Settings - Per-site configuration via YAML
  • PSR-14 Events - Customize menus with custom actions
  • Data ViewHelper - Add edit links for related records (e.g., news items)
  • Dark/Light Mode - Automatic or manual color scheme selection
  • Configurable Position - 12 toolbar positions available
  • Save & Close - Quick return to frontend after editing
  • Inline Editing (experimental) - Edit content directly in the frontend without navigating to the backend (TYPO3 v13: iframe modal, TYPO3 v14.2+: contextual sidebar)

New in version 2.2.0

Contextual Editing Sidebar — An experimental feature that allows editors to edit content elements and page properties in a sidebar panel directly in the frontend. Leverages TYPO3 v14.2's record_edit_contextual route. See Contextual Editing for details.

Contextual editing sidebar

New in version 2.3.0

Iframe Modal Editor — An experimental slide-in iframe modal that brings inline editing to TYPO3 v13. Opens the backend edit form in a panel directly in the frontend — no configuration required. See Contextual Editing for details.

Support 

There are several ways to get support for this extension:

License 

This extension is licensed under GNU General Public License 2.0 (or later).

How it works 

On page load a script calls an ajax endpoint, to fetch information about all editable (by the current backend user) content elements on the current page.

The script then injects (if it's possible) an Edit Menu into the frontend for each editable content element.

This is only possible, if the content element "c-ids" (Content Element IDs) are available in the frontend template, e.g. "c908". By default the fluid styled content elements provide these ids.

Example HTML output of a content element
<div id="c10" class="frame frame-default frame-type-textpic frame-layout-0">
    ...
</div>
Copied!

The rendered Edit Menu links to the corresponding edit views in the TYPO3 backend.

Frontend Edit Screencast

Installation 

Requirements 

  • PHP 8.2 - 8.5
  • TYPO3 13.4 LTS - 14.x

Version Matrix 

Version TYPO3 PHP
2.x 13-14 8.2-8.5
1.x 11-13 8.1-8.5

Installation 

Require the extension via Composer (recommended):

composer require xima/xima-typo3-frontend-edit
Copied!

Or download it from the TYPO3 extension repository.

Configuration 

Include the Frontend Edit (xima/xima-typo3-frontend-edit) site set.

Configuration 

The extension is ready to use without any further setup.

You can also adapt the extension to your needs and disable the functionality for specific pages or content types.

Learn what configuration options are available on the following pages:

Site Settings 

All configuration options are managed via TYPO3 Site Settings. This provides site-specific configuration and better caching behavior.

Configuration is done in your site's config/sites/<site-identifier>/settings.yaml file or via the TYPO3 backend in Site Management > Sites > Edit site > Settings.

Available Settings 

Enable/Disable 

frontendEdit.enabled

frontendEdit.enabled
type

bool

Default

true

Enable or disable the frontend editing functionality for this site.

frontendEdit:
  enabled: true
Copied!

Appearance Settings 

frontendEdit.colorScheme

frontendEdit.colorScheme
type

string

Default

'auto'

Choose the color scheme for the frontend editing UI. Options: auto (follows system preference), light, dark.

frontendEdit:
  colorScheme: 'auto'
Copied!

frontendEdit.showContextMenu

frontendEdit.showContextMenu
type

bool

Default

true

Show the Edit Menu with additional actions (edit page, hide, move, history). Disable to show only the edit button.

frontendEdit:
  showContextMenu: true
Copied!

frontendEdit.showStickyToolbar

frontendEdit.showStickyToolbar
type

bool

Default

true

Show the Toolbar with page editing options and toggle functionality.

frontendEdit:
  showStickyToolbar: true
Copied!

frontendEdit.toolbarPosition

frontendEdit.toolbarPosition
type

string

Default

'bottom-right'

Choose the position for the Toolbar.

Available options:

  • top-left, top-center, top-right
  • bottom-left, bottom-center, bottom-right
  • left-top, left-center, left-bottom
  • right-top, right-center, right-bottom
frontendEdit:
  toolbarPosition: 'bottom-right'
Copied!

frontendEdit.enableOutline

frontendEdit.enableOutline
type

bool

Default

true

Show an outline around content elements when hovering over them.

frontendEdit:
  enableOutline: true
Copied!

frontendEdit.enableScrollToElement

frontendEdit.enableScrollToElement
type

bool

Default

true

Automatically scroll to the edited content element after saving and returning to the frontend.

frontendEdit:
  enableScrollToElement: true
Copied!

frontendEdit.enableContextualEditing

frontendEdit.enableContextualEditing
type

bool

Default

false

New in version 2.2.0

Opens content element and page property edit forms in a sidebar panel directly in the frontend instead of navigating to the backend. Uses TYPO3's record_edit_contextual route introduced in v14.2.

See Contextual Editing for details on how to use this feature.

frontendEdit:
  enableContextualEditing: true
Copied!

frontendEdit.enableFlashMessages

frontendEdit.enableFlashMessages
type

bool

Default

true

Show TYPO3 flash messages (e.g., save confirmations) as toast notifications in the frontend after returning from the backend. When you use "Save & Close" in the backend, success or error messages will be displayed as notifications in the frontend.

Flash message notification in frontend

Flash message notification after saving a content element

frontendEdit:
  enableFlashMessages: true
Copied!

Filter Settings 

frontendEdit.filter.ignorePids

frontendEdit.filter.ignorePids
type

string

Default

''

Comma-separated list of page IDs (and their subpages) where frontend editing should be disabled.

frontendEdit:
  filter:
    ignorePids: '1,2,3'
Copied!

frontendEdit.filter.ignoreDoktypes

frontendEdit.filter.ignoreDoktypes
type

string

Default

''

Comma-separated list of page types (doktype) where frontend editing should be disabled. Common doktypes: 1 (Standard), 3 (External URL), 4 (Shortcut), 6 (Backend User Section), 7 (Mount Point), 199 (Menu Separator), 254 (Folder), 255 (Recycler).

frontendEdit:
  filter:
    ignoreDoktypes: '4,199,254'
Copied!

frontendEdit.filter.ignoreCTypes

frontendEdit.filter.ignoreCTypes
type

string

Default

''

Comma-separated list of content types (CType) to exclude from frontend editing.

frontendEdit:
  filter:
    ignoreCTypes: 'html,div'
Copied!

frontendEdit.filter.ignoreListTypes

frontendEdit.filter.ignoreListTypes
type

string

Default

''

Comma-separated list of plugin types (list_type) to exclude from frontend editing.

frontendEdit:
  filter:
    ignoreListTypes: 'news_pi1'
Copied!

frontendEdit.filter.ignoreUids

frontendEdit.filter.ignoreUids
type

string

Default

''

Comma-separated list of specific content element UIDs to exclude from frontend editing.

frontendEdit:
  filter:
    ignoreUids: '100,200,300'
Copied!

Example Configuration 

Full example with all available options:

config/sites/my-site/settings.yaml
frontendEdit:
  enabled: true
  colorScheme: 'auto'
  showContextMenu: true
  showStickyToolbar: true
  toolbarPosition: 'bottom-right'
  enableOutline: true
  enableScrollToElement: true
  enableFlashMessages: true
  enableContextualEditing: false
  filter:
    ignorePids: '1,2,3'
    ignoreDoktypes: '4,199,254'
    ignoreCTypes: 'html,div'
    ignoreListTypes: ''
    ignoreUids: ''
Copied!

UserTSconfig 

New in version 2.1.0

You can disable the frontend editing feature for specific backend users or backend user groups via UserTSconfig.

When disabled via UserTSconfig, the entire frontend editing feature is hidden — including the sticky toolbar. The user cannot re-enable it via the toggle button.

This is useful for restricting frontend editing to certain editor groups while keeping other backend users unaffected.

Disable frontend editing 

tx_ximatypo3frontendedit.disabled

tx_ximatypo3frontendedit.disabled
type

bool

Default

false

Set to 1 to disable frontend editing for the affected backend users.

tx_ximatypo3frontendedit.disabled = 1
Copied!

By default, frontend editing is enabled for all backend users.

Examples 

Disable for a specific backend user group 

In the TSconfig field of a backend user group record:

tx_ximatypo3frontendedit.disabled = 1
Copied!

All users in this group will no longer see the frontend editing UI.

Disable for a specific backend user 

In the TSconfig field of a backend user record:

tx_ximatypo3frontendedit.disabled = 1
Copied!

Disable globally via Page TSconfig 

You can also set this in Page TSconfig (e.g. via Configuration/page.tsconfig), which will then apply to all backend users on the affected pages. However, UserTSconfig is recommended as it targets users directly regardless of which page they visit.

Extension configuration 

  1. Go to Admin Tools > Settings > Extension Configuration
  2. Choose xima_typo3_frontend_edit

The extension currently provides the following configuration options:

Features 

Save and Close

Save and Close
Type
boolean
Default
1

Enable this option to render a save and close button in the header of edit forms.

Frontend Edit Save and Close Button

Return URL generation

Return URL generation
Type
boolean
Default
0

Enable this option to ignore the referer header for the return url and force the url generation

Target blank

Target blank
Type
boolean
Default
0

Enable the target blank option for all Edit Menu links to open in a new tab

Redirect

Redirect
Type
boolean
Default
0

Use the redirect option to redirect the edit links, so the full TYPO3 backend is loaded instead of only the edit form

Debug 

Frontend Debug Mode

Frontend Debug Mode
Type
boolean
Default
0

Enable debug logging in browser console for detailed information about content element parsing and assignment.

Usage 

Once installed and configured, the extension provides two main editing interfaces in the frontend for logged-in backend users.

Edit Menu 

The Edit Menu appears on content elements and provides quick access to editing actions like edit, hide, delete, and move.

Toolbar 

The Toolbar provides page-level actions and a toggle to enable or disable frontend editing.

Inline Editing (experimental) 

Edit content elements directly in the frontend. Uses a contextual sidebar on TYPO3 v14.2+ or a slide-in iframe modal on TYPO3 v13.

Edit Menu 

Each content element on the page displays an edit button when you hover over it.

Edit Button

Clicking this button opens the Edit Menu with various actions:

  • Edit Content Element - Open the content element in the backend editor
  • Edit page - Open the current page properties
  • Hide/Unhide - Toggle visibility of the content element
  • Info - Display content element information
  • Move - Reorder the content element
  • History - View the content element's history
  • New content after - Add a new content element after this one
  • Delete - Delete the content element (with confirmation dialog)
Edit Menu

Delete Confirmation 

New in version 2.3.0

Clicking Delete opens a confirmation dialog before the record is removed. The dialog shows the record title and identifier (e.g. My Element [tt_content:42]) so editors can verify they are deleting the correct element.

  • Escape, the close button, or clicking the backdrop cancels the action
  • Focus returns to the previously focused element after closing
  • On success, a notification is shown and the page reloads automatically

Requirements 

The Edit Menu requires content elements to have a "c-id" (Content Element ID) in their HTML output, e.g. id="c908".

This is automatically provided by the fluid_styled_content extension. For custom templates, ensure the wrapping element includes the content element UID:

<div id="c{data.uid}">
    ...
</div>
Copied!

See also the FAQ for common issues with the Edit Menu.

Toolbar 

Toolbar Screencast

The Toolbar provides quick access to page-level actions. It appears at a configurable position on the screen (default: bottom-right).

Toolbar

Actions 

The Toolbar includes:

  • Toggle - (eye icon) Enable or disable frontend editing for the current session
  • Edit page properties - Open the current page properties
  • Edit page - Open the page module in the backend
  • Info - Display page information
  • Move - Reorder page
Toolbar Menu

Position 

You can configure the Toolbar position via Site Settings:

frontendEdit:
  toolbarPosition: 'bottom-right'
Copied!

Available positions:

  • top-left, top-center, top-right
  • bottom-left, bottom-center, bottom-right
  • left-top, left-center, left-bottom
  • right-top, right-center, right-bottom

Disabling Frontend Edit 

You can temporarily disable frontend editing by clicking the toggle button in the Toolbar. This setting is stored per user and persists across sessions.

To disable the Toolbar entirely, set showStickyToolbar: false in the Site Settings.

Contextual Editing 

New in version 2.2.0

Contextual editing lets editors modify content elements and page properties directly in the frontend. Clicking an edit button opens a sidebar panel that slides in from the right, displaying the TYPO3 FormEngine edit form — no detour through the backend required.

Screencast of the contextual editing sidebar

Editing a content element via the contextual sidebar

Setup 

Enable the feature in your site settings:

config/sites/my-site/settings.yaml
frontendEdit:
  enableContextualEditing: true
Copied!

Or via the TYPO3 backend: Site Management > Sites > Edit site > Settings > Frontend Edit > Appearance.

Usage 

With contextual editing enabled:

  • Clicking an edit button opens the sidebar instead of navigating to the backend.
  • The page properties link in the sticky toolbar also opens in the sidebar.
  • Ctrl+Click (or Cmd+Click on macOS) bypasses the sidebar and opens the full backend editor directly.

Controls 

Save
Saves the record and keeps the sidebar open.
Save & Close
Saves and closes the sidebar. The page reloads to reflect changes.
Close
Closes the sidebar. Unsaved changes trigger a confirmation prompt.
Expand
Opens the full backend editor. Respects the linkTargetBlank setting (same window or new tab).

Escape and clicking the backdrop also close the sidebar.

Limitations 

The FormEngine runs inside an iframe outside its intended context. Some advanced features may not work fully:

  • IRRE / relation browsers may have limited functionality.
  • Context menus (three-dot menu) are not available inside the iframe. Primary actions (edit, hide, delete) are accessible as direct buttons.
  • Console errors from backend JavaScript modules are expected and harmless.

For full editing capabilities, use the expand button.

Fallback Behavior 

  • Setting disabled: All edit links navigate to the backend as before.
  • JavaScript disabled: Edit links fall back to their href attribute, pointing to the standard backend URL.

Developer corner 

Three opportunities exist to extend the Edit Menu with custom entries:

  • Use an event to modify the Edit Menu directly
  • Use a viewhelper to extend the Edit Menu with data entries
  • Use empty column markers to add "Create new content" buttons for empty columns

Additionally, you can provide a custom css file to adjust the styling.

PSR-14 Events 

The extension provides two PSR-14 events to customize the Edit Menu and Toolbar.

FrontendEditDropdownModifyEvent 

Use the FrontendEditDropdownModifyEvent to modify the Edit Menu for content elements. You can add, remove or modify buttons for specific content elements.

Available methods:

  • getContentElement() - Returns the content element data array
  • getMenuButton() - Returns the current menu button
  • setMenuButton() - Sets the modified menu button
  • getReturnUrl() - Returns the return URL for edit links

Example:

Classes/EventListener/ModifyEditMenuListener.php
<?php

declare(strict_types=1);

namespace Vendor\Package\EventListener;

use TYPO3\CMS\Backend\Routing\UriBuilder;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Imaging\IconFactory;
use Xima\XimaTypo3FrontendEdit\Enumerations\ButtonType;
use Xima\XimaTypo3FrontendEdit\Event\FrontendEditDropdownModifyEvent;
use Xima\XimaTypo3FrontendEdit\Template\Component\Button;

#[AsEventListener(
    identifier: 'my-extension/modify-edit-menu',
)]
class ModifyEditMenuListener
{
    public function __construct(
        protected readonly IconFactory $iconFactory,
        protected readonly UriBuilder $uriBuilder
    ) {}

    public function __invoke(FrontendEditDropdownModifyEvent $event): void
    {
        $contentElement = $event->getContentElement();
        $menuButton = $event->getMenuButton();

        // Add a custom button for a specific plugin
        if ($contentElement['CType'] === 'list' && $contentElement['list_type'] === 'news_pi1') {
            $menuButton->appendAfterChild(new Button(
                'Edit news settings',
                ButtonType::Link,
                $this->uriBuilder->buildUriFromRoute(
                    'record_edit',
                    [
                        'edit' => ['tt_content' => [$contentElement['uid'] => 'edit']],
                        'returnUrl' => $event->getReturnUrl(),
                    ],
                )->__toString(),
                $this->iconFactory->getIcon('content-news', 'small')
            ),
            'edit_page',
            'edit_news_settings'
            );
        }

        // Remove a button
        $menuButton->removeChild('div_action');

        $event->setMenuButton($menuButton);
    }
}
Copied!

FrontendEditPageDropdownModifyEvent 

Use the FrontendEditPageDropdownModifyEvent to modify the Toolbar menu for page-level actions.

Available methods:

  • getPageId() - Returns the current page ID
  • getLanguageUid() - Returns the current language UID
  • getMenuButton() - Returns the current menu button
  • setMenuButton() - Sets the modified menu button
  • getReturnUrl() - Returns the return URL for edit links

Example:

Classes/EventListener/ModifyToolbarListener.php
<?php

declare(strict_types=1);

namespace Vendor\Package\EventListener;

use TYPO3\CMS\Backend\Routing\UriBuilder;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Imaging\IconFactory;
use Xima\XimaTypo3FrontendEdit\Enumerations\ButtonType;
use Xima\XimaTypo3FrontendEdit\Event\FrontendEditPageDropdownModifyEvent;
use Xima\XimaTypo3FrontendEdit\Template\Component\Button;

#[AsEventListener(
    identifier: 'my-extension/modify-toolbar',
)]
class ModifyToolbarListener
{
    public function __construct(
        protected readonly IconFactory $iconFactory,
        protected readonly UriBuilder $uriBuilder
    ) {}

    public function __invoke(FrontendEditPageDropdownModifyEvent $event): void
    {
        $menuButton = $event->getMenuButton();

        // Add a custom page action
        $menuButton->appendChild(new Button(
            'Clear page cache',
            ButtonType::Link,
            $this->uriBuilder->buildUriFromRoute(
                'tce_db',
                [
                    'cacheCmd' => $event->getPageId(),
                    'redirect' => $event->getReturnUrl(),
                ],
            )->__toString(),
            $this->iconFactory->getIcon('actions-system-cache-clear', 'small')
        ),
        'clear_cache'
        );

        $event->setMenuButton($menuButton);
    }
}
Copied!

Data Attributes 

Additionally, there is an option to extend your fluid template to provide data for extra Edit Menu entries, e.g. edit links to all news entries within a list plugin.

Custom Fluid Template
<div class="news-item">
    ...
    <xtfe:data label="{news.title}" uid="{news.uid}" table="tx_news_domain_model_news" icon="content-news" />
</div>
Copied!

This generates a hidden input element with the provided data (only if the frontend edit is enabled). Within the parent content element (e.g. the whole list plugin), a new "data" section will show up in the Edit Menu to list all edit links.

Frontend Edit Extended Data Entries

Keep in mind, that this only works if the parent content element has a c-id and offer one of the following data combinations:

  • Edit record link (provide uid and table of the desired record, the link to the TYPO3 backend will be generated automatically)
  • Custom edit url (provide a custom url)

Empty Columns 

The extension can display "Create new content" buttons for empty columns directly in the frontend. This allows editors to add content without switching to the TYPO3 backend.

Empty column marker showing a "Create new content" button in the frontend

A "Create new content" button appears in empty columns when frontend editing is enabled

It works in two steps:

  1. The integrator places a lightweight marker in their Fluid templates
  2. The extension detects empty columns via AJAX and injects the buttons client-side

ColumnTargetViewHelper 

The ColumnTargetViewHelper renders a hidden <div> element as a DOM marker. No content, no styling, no logic — just a marker that the JavaScript picks up after the page loads.

Register the namespace in your Fluid template:

{namespace xfe=Xima\XimaTypo3FrontendEdit\ViewHelpers}
Copied!

Or use the XML namespace syntax:

<html xmlns:xfe="http://typo3.org/ns/Xima/XimaTypo3FrontendEdit/ViewHelpers"
      data-namespace-typo3-fluid="true">
Copied!

Arguments 

Name Type Required Description
colPos int yes The column position from the backend layout
containerUid int no The UID of the parent container element (for b13/container columns)

Page columns 

Place the marker after the content rendering for each column:

Page template (e.g. Default.html)
{namespace xfe=Xima\XimaTypo3FrontendEdit\ViewHelpers}

<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0'}" />
<xfe:columnTarget colPos="0" />

<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '1'}" />
<xfe:columnTarget colPos="1" />
Copied!

When colPos 0 or 1 is empty, a "+" button appears at the marker position. Clicking it opens the TYPO3 record editor to create a new content element in that column.

When the column has content, the marker stays hidden and has no effect on the page.

Container columns 

For container elements (e.g. two-column layouts, tabs, accordions using b13/container), add the containerUid argument:

Container template (e.g. TwoColumn.html)
{namespace xfe=Xima\XimaTypo3FrontendEdit\ViewHelpers}

<div class="column-left">
    <f:for each="{children_201}" as="record">
        <f:format.raw>{record.renderedContent}</f:format.raw>
    </f:for>
    <xfe:columnTarget colPos="201" containerUid="{data.uid}" />
</div>

<div class="column-right">
    <f:for each="{children_202}" as="record">
        <f:format.raw>{record.renderedContent}</f:format.raw>
    </f:for>
    <xfe:columnTarget colPos="202" containerUid="{data.uid}" />
</div>
Copied!

How it works 

  1. The ViewHelper renders <div data-xfe-colpos="0" hidden></div> (invisible, no layout impact)
  2. The extension's JavaScript scans the page for these markers after loading
  3. An AJAX request to the backend checks which columns are empty
  4. For each empty column that has a matching marker, a "+" button is injected
  5. The button opens the TYPO3 record editor with the correct colPos pre-filled

Container support requires the b13/container extension. The service automatically detects whether it is installed. Without it, only page columns are supported and container markers are silently ignored.

Custom Styling 

The Edit Menu was styled to not disturb the frontend layout. You can easily adjust the styling by providing an additional css or js file within your ext_localconf.php which will be loaded together with the frontend edit resources:

ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['xima_typo3_frontend_edit']['registerAdditionalFrontendResources'][] = 'EXT:custom_extension/Resources/Public/Css/Custom.css';
Copied!

Delineation 

There are several TYPO3 extensions that aim to improve the editing experience between frontend and backend. This page provides an overview of related extensions and how they differ from xima_typo3_frontend_edit.

visual_editor (FriendsOfTYPO3) 

visual_editor provides inline WYSIWYG editing using Web Components and CKEditor 5. Editors can modify text fields in place, reorder content elements via drag-and-drop, and save changes without leaving the page. It runs exclusively within a dedicated backend module that embeds the frontend page in an iframe — it does not inject editing capabilities into the regular frontend. It also requires ViewHelper integration in Fluid templates. In contrast, this extension works directly in the frontend, requires no template changes, and links to standard backend forms for editing.

feedit 

feedit was the original TYPO3 core extension for frontend editing. It injected edit icons directly into the rendered HTML on the server side. The core integration it relied on has since been removed. This extension uses a different approach with PSR-15 middleware and client-side AJAX menus.

frontend_editing 

frontend_editing is an older extension that provided frontend editing capabilities for TYPO3. This extension is not a further development of frontend_editing. While the general goal is similar, the technical approach is entirely different — this extension uses lightweight JavaScript injection and links to backend forms.

content_preview 

content_preview provides a split-view with a live frontend preview within the TYPO3 backend Page module. It enhances the backend interface, while this extension enhances the frontend. Both approaches can be used together.

FAQ 

Why is the Edit Menu not displayed on my page / for my content element? 

There may be a number of reasons for this:

Backend user session

Are you currently logged into the TYPO3 backend? Otherwise, frontend editing will not work.

Backend user permission

Does your user have all permissions to edit the page as well as the content elements?

Site Set

Is the Frontend Edit site set included in your site configuration? Check the Site Settings to verify the extension is enabled.

Content Element IDs

Make sure that the content element "c-ids" (Content Element IDs) are available within your frontend template, e.g. "c908".

Content Element on current Page

Currently, only content elements that belong to the current page are editable. Inherited content (e.g. shared footer elements) cannot be edited from the inheriting page.

Debug

Check the network tab for the initial AJAX call to /typo3/ajax/xima-frontend-edit/edit-information with the information about the editable content elements and the according Edit Menus.

After closing the edit form, I am redirected to the wrong frontend location (e.g. the root page) 

This could be caused by a strict referer header in your request. If the return url could not be determined correctly, you can force the url generation by pid and language in the extension setting: forceReturnUrlGeneration.

I can't change the language within a content element. 

This is a TYPO3 backend limitation. The reduced edit form frame does not support the language switch. Use the redirect configuration in the extension settings to open the edit form within the full TYPO3 backend context, which supports the language switch.

The edit button is not displayed for a different (sub)domain. 

The frontend edit needs an active backend user session to work. If you are using a different (sub)domain, the session cookie is only valid for the TYPO3 backend domain and is not available for the frontend edit.

You can have a look at the cookieDomain setting to set a more flexible domain configuration. This allows the session cookie to be shared between different (sub)domains, enabling the frontend edit functionality to work across different domains.

See https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/Configuration/Typo3ConfVars/SYS.html#confval-globals-typo3-conf-vars-sys-cookiedomain

Alternatively, you can use the multisite_belogin extension, which provides backend login support across multiple domains without requiring shared cookie domains.

The edit button is not displayed with DCE extension content elements. 

Dynamic content elements do not provide the required "c-id" (Content Element ID) in their default templates. You need to customize the DCE templates to include the "c-id" in the HTML output.

DCE Template
<div class="dce" id="c{contentObject.uid}">
    Your template goes here...
</div>
Copied!

The edit button is not displayed with container extension content elements. 

Container content elements do not provide the required "c-id" (Content Element ID) in their default templates. You need to customize the container templates to include the "c-id" in the HTML output.

Container Template
<div id="c{data.uid}">
   <f:for each="{children_200}" as="record">
       {record.header} <br>
       <f:format.raw>
           {record.renderedContent}
       </f:format.raw>
   </f:for>
</div>
Copied!

Alternatively, you can also use fluid_styled_content in the templates:

Container Template
<f:layout name="Default" />

<f:section name="Main">
  <f:for each="{children_200}" as="record">
      {record.header} <br>
      <f:format.raw>
          {record.renderedContent}
      </f:format.raw>
  </f:for>
</f:section>
Copied!

Migration Guide 

This guide helps you migrate between major versions of the extension.

Version 2.0 

Migration from version 1.x to version 2.x.

Breaking Changes 

Area Change
Configuration TypoScript → Site Settings (see Site Settings)
TYPO3 v14 added, v12 removed
PHP Minimum 8.2, added 8.5 support
Menu Structure defaultMenuStructure options removed

Configuration Mapping 

TypoScript (1.x) Site Settings (2.x)
config.tx_ximatypo3frontendedit_enable frontendEdit.enabled
plugin.tx_ximatypo3frontendedit.settings.ignorePids frontendEdit.filter.ignorePids
plugin.tx_ximatypo3frontendedit.settings.ignoreCTypes frontendEdit.filter.ignoreCTypes
plugin.tx_ximatypo3frontendedit.settings.ignoreListTypes frontendEdit.filter.ignoreListTypes
plugin.tx_ximatypo3frontendedit.settings.ignoreUids frontendEdit.filter.ignoreUids

Quick Migration 

  1. Update the extension to version 2.x
  2. Remove TypoScript configuration for this extension
  3. Add Site Settings in config/sites/<identifier>/settings.yaml:

    frontendEdit:
      enabled: true
      filter:
        ignorePids: '1,2,3'
        ignoreCTypes: 'html,div'
    Copied!
  4. Clear all TYPO3 caches

Need Help? 

  • Check the FAQ for common issues
  • Open an issue on GitHub