Add page-specific JavaScript support
Update documentation for new JS variables and rendering pipeline Add script.js file support to content directories Implement cache-busting for JavaScript files Update static file serving to include JavaScript files Document page-specific script loading in base.php
This commit is contained in:
parent
f8a352afce
commit
f1447049e4
6 changed files with 70 additions and 7 deletions
|
|
@ -23,7 +23,7 @@ Used for both frontpage and page views:
|
|||
1. Load metadata for `$pageDir`
|
||||
2. Load page plugins (from metadata `plugins` field)
|
||||
3. Render all content files, concatenate HTML
|
||||
4. Compute: `$pageTitle`, `$metaDescription`, `$pageCssUrl`/`$pageCssHash`, `$socialImageUrl`
|
||||
4. Compute: `$pageTitle`, `$metaDescription`, `$pageCssUrl`/`$pageCssHash`, `$pageJsUrl`/`$pageJsHash`, `$socialImageUrl`
|
||||
5. Fire `Hook::TEMPLATE_VARS` with all variables
|
||||
6. `extract()` variables → render `page.php` → capture output as `$content`
|
||||
7. Render `base.php` with `$content` + base variables
|
||||
|
|
@ -37,12 +37,12 @@ Handled directly in `router.php` (not a separate function):
|
|||
2. Load metadata, check `hide_list`
|
||||
3. Select list template from `page_template` metadata
|
||||
4. Call `buildListItems()` from `helpers.php` (builds + sorts items)
|
||||
5. Store `pageTitle`, `metaDescription`, `pageCssUrl`, `pageCssHash`, `feedUrl` on context
|
||||
5. Store `pageTitle`, `metaDescription`, `pageCssUrl`, `pageCssHash`, `pageJsUrl`, `pageJsHash`, `feedUrl` on context
|
||||
6. Fire `Hook::TEMPLATE_VARS`
|
||||
7. Render list template → capture as `$content`
|
||||
8. Pass to `renderTemplate()` which renders `base.php`
|
||||
|
||||
**`renderTemplate(Context $ctx, string $content, int $statusCode = 200): void`** — Wraps content in base template. Used for list views and error pages. Reads `pageTitle`, `metaDescription`, `pageCssUrl`, `pageCssHash`, and `feedUrl` from the context object (set by the list case in `router.php`). For error pages, these context keys are unset, so base.php receives nulls.
|
||||
**`renderTemplate(Context $ctx, string $content, int $statusCode = 200): void`** — Wraps content in base template. Used for list views and error pages. Reads `pageTitle`, `metaDescription`, `pageCssUrl`, `pageCssHash`, `pageJsUrl`, `pageJsHash`, and `feedUrl` from the context object (set by the list case in `router.php`). For error pages, these context keys are unset, so base.php receives nulls.
|
||||
|
||||
## Atom Feed Rendering
|
||||
|
||||
|
|
@ -79,9 +79,9 @@ setCachedMarkdown(string $filePath, string $html, string $langPrefix = ''): void
|
|||
|
||||
Before content routing, the router serves static files from content directory with an explicit MIME type allowlist:
|
||||
|
||||
`css`, `jpg`, `jpeg`, `png`, `gif`, `webp`, `svg`, `pdf`, `woff`, `woff2`, `ttf`, `otf`
|
||||
`css`, `jpg`, `jpeg`, `png`, `gif`, `webp`, `svg`, `pdf`, `woff`, `woff2`, `ttf`, `otf`, `js`
|
||||
|
||||
Files not in this list are not served as static assets. Notably, `.js` files are excluded — JavaScript must be placed in `custom/assets/` to be served (at the document root URL), or linked from an external source.
|
||||
Files not in this list are not served as static assets.
|
||||
|
||||
### Custom Assets (router.php)
|
||||
|
||||
|
|
@ -100,9 +100,9 @@ Files in `custom/assets/` are served at the document root URL. Example: `custom/
|
|||
|
||||
MIME types resolved from extension map, falling back to `mime_content_type()`.
|
||||
|
||||
## CSS Cache Busting
|
||||
## CSS and JS Cache Busting
|
||||
|
||||
Page-specific CSS gets an MD5 hash appended: `?v={hash}`. Computed by `findPageCss()`. The default theme's CSS is linked directly without hash (uses browser caching).
|
||||
Page-specific CSS and JS get an MD5 hash appended: `?v={hash}`. Computed by `findPageCss()` and `findPageJs()` respectively. The default theme's CSS is linked directly without hash (uses browser caching).
|
||||
|
||||
## Parsedown
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue