Skip to content

feat(parser): let a view engine ask for the DocumentParser pass - #2445

Merged
Seiger merged 1 commit into
evolution-cms:3.5.xfrom
elcreator:feat-parser-enable-switch
Sep 3, 2026
Merged

feat(parser): let a view engine ask for the DocumentParser pass#2445
Seiger merged 1 commit into
evolution-cms:3.5.xfrom
elcreator:feat-parser-enable-switch

Conversation

@elcreator

Copy link
Copy Markdown

Where a template's code is kept and whether the DocumentParser runs over the result were one decision: if (!$template) gated parseDocumentSource(), and the same fact turned the post-parse tail of outputContent() off - the [!nc!] rewrite, [^stats^], cleanUpMODXTags(), rewriteUrls() and escaped tag recovery. An engine that wanted those had to re-implement them, in the core's own order, from a plugin.

They are now one property. Core::$runDocumentParser starts as !$template - a document rendered from a file is finished output, and nothing runs a second dialect over it - and OnLoadWebDocument fires while the decision is still open, so an engine whose syntax survives the pass sets it back to true instead of copying the pipeline. The whole tail follows that one flag.

No column, no form control and no migration: which pass a document wants is a property of the request, not of the template.

TemplateProcessor reads its row once instead of a column at a time; where the code lives and which engine was pinned were a query each, on every page.

Where a template's code is kept and whether the DocumentParser runs over the
result were one decision: `if (!$template)` gated parseDocumentSource(), and
the same fact turned the post-parse tail of outputContent() off - the
[!nc!] rewrite, [^stats^], cleanUpMODXTags(), rewriteUrls() and escaped tag
recovery. An engine that wanted those had to re-implement them, in the core's
own order, from a plugin.

They are now one property. Core::$runDocumentParser starts as !$template - a
document rendered from a file is finished output, and nothing runs a second
dialect over it - and OnLoadWebDocument fires while the decision is still open,
so an engine whose syntax survives the pass sets it back to true instead of
copying the pipeline. The whole tail follows that one flag.

No column, no form control and no migration: which pass a document wants is a
property of the request, not of the template.

TemplateProcessor reads its row once instead of a column at a time; where the
code lives and which engine was pinned were a query each, on every page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9k7KBwVFZ6PSWH27ePZuJ
@Seiger
Seiger merged commit e0a66d5 into evolution-cms:3.5.x Sep 3, 2026
6 checks passed
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