How to correctly inject a header button via Tutor Plugin in CMS (Studio)?

Hi everyone.

I’m creating a Tutor plugin (Tutor v19.0.2) to inject a custom button into the CMS (Studio) header next to the search icon. I’m working with Open edX release-2023-03-08-12.47-4027-g84583a73e0.

I’ve tried so far creating a Tutor plugin with this structure:

tutor-cms-button/
├── pyproject.toml
├── README.md
├── patches/
│ └── cms/
│ └── templates/
│ └── header-navbar-authenticated.html
└── tutor_cms_button/
└── plugin.py (empty, no python logic, just patches)

The plugin installs and enables without error, but the CMS header remains unchanged, and the button doesn’t appear.

Questions to the community:

  1. What is the correct template file to patch when injecting custom HTML into the CMS header for this version of Open edX?
  2. Is the path I’ve used (patches/cms/templates/header-navbar-authenticated.html) correct, or should another template file be targeted instead?
  3. Is there any additional step necessary (e.g., rebuilding specific containers, adding static files, or MFE patching) that I’m possibly missing?
  4. Could someone provide a minimal working example of patch-based header modification for this version?

Thank you very much for your help!

Hi @Abraham and welcome!

Have you tried using frontend plugin slots? Customizing Site Header Using Frontend “Slots” — Latest documentation

1 Like