Conversation
…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->Traversable and Traversable->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->Traversable and Traversable->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->Traversable and Traversable->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 /> [](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>
Summary of ChangesHello @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
Changelog
Activity
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
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.
packages/typo3-docs-theme/src/DependencyInjection/Typo3DocsThemeExtension.php
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
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 bumpfriendsofphp/php-cs-fixerincomposer.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.
packages/typo3-docs-theme/src/DependencyInjection/Typo3DocsThemeExtension.php
Outdated
Show resolved
Hide resolved
- 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>
Summary
Allow users to override Twig templates when rendering documentation locally via Docker or a custom CI pipeline. Two methods are supported:
/templates(highest priority)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:
/templatesinstead of/project/custom-templatesto avoid Docker volume mount ordering issues when both paths are under/project--entrypoint=cat/--entrypoint=sh— the container entrypoint routes all commands to the PHP guides binary, so barecatfails with "Command 'cat' is not defined"resources/custom-templatespath (was mentioned in original docs but never coded)array_reverselogic caused project-bundled templates to incorrectly override Docker volume templates. Fixed by building the array in final priority order, eliminatingarray_reverseChanged files
Dockerfilemkdir -p /templatesTypo3DocsThemeExtension.php/templatesand/project/resources/custom-templates, build template path array in priority orderDocumentation/Templating/Index.rstDocumentation/Index.rstVerification
Test plan
/templatesdirectory exists-v ./my-templates:/templates:roand confirm they override built-in templatesresources/custom-templates/in a project and confirm auto-detection without extra volume mount