Skip to content

[FEATURE] Make templates overridable#10

Open
CybotTM wants to merge 3 commits intomainfrom
feature/overridable-templates
Open

[FEATURE] Make templates overridable#10
CybotTM wants to merge 3 commits intomainfrom
feature/overridable-templates

Conversation

@CybotTM
Copy link
Member

@CybotTM CybotTM commented Feb 25, 2026

Summary

Allow users to override Twig templates when rendering documentation locally via Docker or a custom CI pipeline. Two methods are supported:

  1. Docker volume mount at /templates (highest priority)
  2. Project-bundled templates at resources/custom-templates (relative to project root)

The theme extension detects these directories and prepends them to the template search path, so custom templates take precedence over the built-in theme templates.

Background

This is a takeover of upstream PR #1085 by @linawolf, with all review feedback addressed:

  • @jaapio: Use /templates instead of /project/custom-templates to avoid Docker volume mount ordering issues when both paths are under /project
  • @kaystrobach: Fix documentation to use --entrypoint=cat / --entrypoint=sh — the container entrypoint routes all commands to the PHP guides binary, so bare cat fails with "Command 'cat' is not defined"
  • @kaystrobach: Implement and document the project-bundled resources/custom-templates path (was mentioned in original docs but never coded)
  • Remove duplicate "Finding the Original Templates" section
  • Priority bug fix: The original PR's array_reverse logic caused project-bundled templates to incorrectly override Docker volume templates. Fixed by building the array in final priority order, eliminating array_reverse

Changed files

File Change
Dockerfile Add mkdir -p /templates
Typo3DocsThemeExtension.php Detect /templates and /project/resources/custom-templates, build template path array in priority order
Documentation/Templating/Index.rst New comprehensive documentation page
Documentation/Index.rst Add Templating to toctree

Verification

  • PHPStan: no errors
  • php-cs-fixer: no fixable issues
  • Documentation renders successfully (15 files, no warnings)
  • 3-cycle code review completed (correctness, edge cases, code quality)
  • TYPO3 docs skill RST validation passed

Test plan

  • Build Docker image and verify /templates directory exists
  • Mount custom templates via -v ./my-templates:/templates:ro and confirm they override built-in templates
  • Place templates in resources/custom-templates/ in a project and confirm auto-detection without extra volume mount
  • Verify both methods can coexist, with Docker volume taking priority
  • Verify rendering without any custom templates still works as before

dependabot bot and others added 2 commits February 23, 2026 16:32
…ocumentation#1187)

Bumps
[friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer)
from 3.94.0 to 3.94.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases">friendsofphp/php-cs-fixer's
releases</a>.</em></p>
<blockquote>
<h2>v3.94.2 7th Gear</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: <code>NoUnusedImportsFixer</code> - do not remove constant
types by <a
href="https://github.com/kubawerlos"><code>@​kubawerlos</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9442">PHP-CS-Fixer/PHP-CS-Fixer#9442</a></li>
<li>fix: <code>AttributeBlockNoSpacesFixer</code> - skipping some
attributes when multiple present by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9445">PHP-CS-Fixer/PHP-CS-Fixer#9445</a></li>
<li>fix: <code>PhpdocLineSpanFixer</code> - handle unions and
intersections in properties by <a
href="https://github.com/paulbalandan"><code>@​paulbalandan</code></a>
in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9438">PHP-CS-Fixer/PHP-CS-Fixer#9438</a></li>
<li>deps: bump crate-ci/typos from 1.43.4 to 1.43.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9444">PHP-CS-Fixer/PHP-CS-Fixer#9444</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.94.1...v3.94.2">https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.94.1...v3.94.2</a></p>
<h2>v3.94.1 7th Gear</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: switch sets ordering to case-insensitive by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9423">PHP-CS-Fixer/PHP-CS-Fixer#9423</a></li>
<li>chore: add tests for <code>ArgumentsAnalyzer</code> by <a
href="https://github.com/kubawerlos"><code>@​kubawerlos</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9422">PHP-CS-Fixer/PHP-CS-Fixer#9422</a></li>
<li>deps: bump crate-ci/typos from 1.43.2 to 1.43.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9426">PHP-CS-Fixer/PHP-CS-Fixer#9426</a></li>
<li>deps: bump ergebnis/composer-normalize from 2.49.0 to 2.50.0 in
/dev-tools by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9427">PHP-CS-Fixer/PHP-CS-Fixer#9427</a></li>
<li>deps: dependabot group for shipmonk/ by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9429">PHP-CS-Fixer/PHP-CS-Fixer#9429</a></li>
<li>deps: bump the phpstan group in /dev-tools with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9425">PHP-CS-Fixer/PHP-CS-Fixer#9425</a></li>
<li>chore: bump dev-tools to PHP 8.5 by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9432">PHP-CS-Fixer/PHP-CS-Fixer#9432</a></li>
<li>chore: reduce Generator into iterable by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9435">PHP-CS-Fixer/PHP-CS-Fixer#9435</a></li>
<li>chore: ConfigurableFixerTemplateFixer - allow to remove option from
computed options by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9437">PHP-CS-Fixer/PHP-CS-Fixer#9437</a></li>
<li>chore: fix Tokens::getIterator() type by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9433">PHP-CS-Fixer/PHP-CS-Fixer#9433</a></li>
<li>CI: cleanup sca.yml by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9430">PHP-CS-Fixer/PHP-CS-Fixer#9430</a></li>
<li>test: check PHP env in CI jobs by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9428">PHP-CS-Fixer/PHP-CS-Fixer#9428</a></li>
<li>chore: reduce Iterator-&gt;Traversable and Traversable-&gt;iterable
when possible by <a
href="https://github.com/keradus"><code>@​keradus</code></a> in <a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/pull/9434">PHP-CS-Fixer/PHP-CS-Fixer#9434</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.94.0...v3.94.1">https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.94.0...v3.94.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md">friendsofphp/php-cs-fixer's
changelog</a>.</em></p>
<blockquote>
<h2>Changelog for v3.94.2</h2>
<ul>
<li>fix: <code>AttributeBlockNoSpacesFixer</code> - skipping some
attributes when multiple present (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9445">#9445</a>)</li>
<li>fix: <code>NoUnusedImportsFixer</code> - do not remove constant
types (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9442">#9442</a>)</li>
<li>fix: <code>PhpdocLineSpanFixer</code> - handle unions and
intersections in properties (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9438">#9438</a>)</li>
<li>deps: bump crate-ci/typos from 1.43.4 to 1.43.5 (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9444">#9444</a>)</li>
</ul>
<h2>Changelog for v3.94.1</h2>
<ul>
<li>chore: add tests for <code>ArgumentsAnalyzer</code> (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9422">#9422</a>)</li>
<li>chore: bump dev-tools to PHP 8.5 (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9432">#9432</a>)</li>
<li>chore: ConfigurableFixerTemplateFixer - allow to remove option from
computed options (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9437">#9437</a>)</li>
<li>chore: fix Tokens::getIterator() type (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9433">#9433</a>)</li>
<li>chore: reduce Generator into iterable (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9435">#9435</a>)</li>
<li>chore: reduce Iterator-&gt;Traversable and Traversable-&gt;iterable
when possible (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9434">#9434</a>)</li>
<li>CI: cleanup sca.yml (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9430">#9430</a>)</li>
<li>deps: bump crate-ci/typos from 1.43.2 to 1.43.4 (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9426">#9426</a>)</li>
<li>deps: bump ergebnis/composer-normalize from 2.49.0 to 2.50.0 in
/dev-tools (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9427">#9427</a>)</li>
<li>deps: bump the phpstan group in /dev-tools with 4 updates (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9425">#9425</a>)</li>
<li>deps: dependabot group for shipmonk/ (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9429">#9429</a>)</li>
<li>docs: switch sets ordering to case-insensitive (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9423">#9423</a>)</li>
<li>test: check PHP env in CI jobs (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9428">#9428</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/7787ceff91365ba7d623ec410b8f429cdebb4f63"><code>7787cef</code></a>
prepared the 3.94.2 release</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/341df8b8e4fa17da2dd6fb0af42e2da40776fffc"><code>341df8b</code></a>
deps: bump crate-ci/typos from 1.43.4 to 1.43.5 (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9444">#9444</a>)</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/b133c65ac304693ae787eca0fdfa901454cca362"><code>b133c65</code></a>
fix: <code>PhpdocLineSpanFixer</code> - handle unions and intersections
in properties (#...</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/716d23f73c7e9a82f1ca4050333a6973cd055f57"><code>716d23f</code></a>
fix: <code>AttributeBlockNoSpacesFixer</code> - skipping some attributes
when multiple p...</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/5394868ab602452040dd069fefc38807bfc422bb"><code>5394868</code></a>
fix: <code>NoUnusedImportsFixer</code> - do not remove constant types
(<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9442">#9442</a>)</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/0823705b521141c44092b4c5cd894e3b2a137b25"><code>0823705</code></a>
bumped version</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/d1a3634e29916367b885250e1fc4dfd5ffe3b091"><code>d1a3634</code></a>
prepared the 3.94.1 release</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/92d82677b6af1b9ce50cf7b6c5fb56afb44a82a6"><code>92d8267</code></a>
chore: reduce Iterator-&gt;Traversable and Traversable-&gt;iterable when
possible (...</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/cbb2b8458324ce35e25a246ffbd38138696716b2"><code>cbb2b84</code></a>
test: check PHP env in CI jobs (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9428">#9428</a>)</li>
<li><a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/commit/8c9458608008606e3992cecf8f0be83c701e4493"><code>8c94586</code></a>
CI: cleanup sca.yml (<a
href="https://redirect.github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/9430">#9430</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.94.0...v3.94.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=friendsofphp/php-cs-fixer&package-manager=composer&previous-version=3.94.0&new-version=3.94.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Allow users to override Twig templates when rendering documentation
locally via Docker or a custom CI pipeline. Two methods are supported:

1. Mount a Docker volume at /templates (highest priority)
2. Bundle templates in the project at resources/custom-templates

The theme extension detects these directories and prepends them to
the template search path, so custom templates take precedence over
the built-in theme templates.

Based on the work by linawolf in PR TYPO3-Documentation#1085, with all review feedback
addressed:
- Use /templates instead of /project/custom-templates to avoid
  volume mount ordering issues (jaapio)
- Fix documentation to use --entrypoint=cat/sh to bypass the
  container entrypoint (kaystrobach)
- Implement and document the project-bundled templates path
  (kaystrobach)
- Remove duplicate documentation section

Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Copilot AI review requested due to automatic review settings February 25, 2026 10:32
@gemini-code-assist
Copy link

Summary of Changes

Hello @CybotTM, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a robust mechanism for users to customize the Twig templates used in local documentation rendering environments. It provides two flexible methods for injecting custom templates, either through Docker volume mounts or by bundling them directly within the project, and ensures a consistent priority order for their application. This enhancement significantly improves the adaptability of the documentation rendering process for local development and custom CI/CD pipelines, without impacting the official TYPO3 documentation build system.

Highlights

  • Template Overriding Mechanism: Enabled the ability for users to override Twig templates when rendering documentation locally, supporting both Docker volume mounts and project-bundled templates.
  • Template Priority: Established a clear priority order for custom templates: Docker volume mounted templates at '/templates' take highest precedence, followed by project-bundled templates at 'resources/custom-templates', and then the built-in theme templates.
  • Bug Fix: Addressed and fixed a critical bug from the original upstream PR related to 'array_reverse' logic, ensuring that template priority is correctly applied.
  • Comprehensive Documentation: Introduced a new, detailed documentation page explaining the template overriding process, including setup instructions, directory structure, and examples.
Changelog
  • Dockerfile
    • Created the '/templates' directory within the Docker image to serve as a mount point for custom templates.
  • Documentation/Index.rst
    • Included the new 'Templating/Index' documentation page in the main table of contents.
  • Documentation/Templating/Index.rst
    • Added a new documentation page detailing the template overriding feature, including how it works, the two supported methods, directory structure, and examples.
  • Typo3DocsThemeExtension.php
    • Implemented logic to detect the presence of '/templates' (Docker volume) and '/project/resources/custom-templates' (project-bundled) directories.
    • Adjusted the template search path to prepend detected custom template directories, ensuring they take precedence over built-in templates.
  • composer.lock
    • Updated the 'friendsofphp/php-cs-fixer' dependency from 'v3.94.0' to 'v3.94.2'.
Activity
  • This pull request is a takeover of an upstream PR ([FEATURE] Make templates overridable TYPO3-Documentation/render-guides#1085 by @linawolf), with all previous review feedback addressed.
  • Feedback from @jaapio was incorporated, leading to the use of '/templates' for Docker volume mounts to avoid nesting issues.
  • Feedback from @kaystrobach was addressed, including fixes for documentation regarding '--entrypoint=cat' / '--entrypoint=sh' and the implementation of project-bundled templates.
  • A critical priority bug fix was implemented to correct 'array_reverse' logic, ensuring the proper precedence of custom templates.
  • All verification steps, including PHPStan, php-cs-fixer, documentation rendering, 3-cycle code review, and TYPO3 docs skill RST validation, have been completed.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a valuable feature allowing users to override Twig templates, which enhances customization capabilities. The implementation is clean and follows the logic described, correctly prioritizing template paths from Docker volumes and the project's resource directory. The accompanying documentation is comprehensive and clear, providing excellent examples for users.

I have a suggestion to improve the robustness of the directory checking logic in Typo3DocsThemeExtension.php. Overall, this is a solid contribution.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Enables end users to override TYPO3 Docs theme Twig templates when rendering docs locally (e.g., via Docker) by adding higher-priority template search paths ahead of the built-in theme templates, and documents the supported override mechanisms.

Changes:

  • Add custom template discovery in the theme DI extension (Docker-mounted /templates, and project-bundled /project/resources/custom-templates) with defined precedence.
  • Add a new documentation page explaining template override structure and Docker usage, and link it from the docs index.
  • Update the Docker image to create /templates, and bump friendsofphp/php-cs-fixer in composer.lock.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/typo3-docs-theme/src/DependencyInjection/Typo3DocsThemeExtension.php Prepends override template directories (if present) before built-in theme templates.
Dockerfile Creates /templates directory inside the runtime image.
Documentation/Templating/Index.rst Adds end-user docs for overriding templates via /templates or resources/custom-templates.
Documentation/Index.rst Adds the new Templating page to the toctree.
composer.lock Updates dev tooling dependency (php-cs-fixer) lock entry.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Remove mkdir -p /templates from Dockerfile: Docker creates mount
  targets automatically when bind mounts are used, so the directory
  only exists when someone intentionally mounts templates. This avoids
  unnecessary filesystem lookups on every template resolution.
- Add is_readable() checks alongside is_dir() for defensive robustness
  against permission issues.

Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants