mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-07-16 05:33:49 +03:00
Dynamic Placeholder Replacement in Page Content via URL Parameters #5264
Closed
opened 2026-02-05 09:52:24 +03:00 by OVERLORD
·
2 comments
No Branch/Tag Specified
development
l10n_development
release
snyk-action
ci_and_static
mfa_key
phpstan_june26
MilnerMart/development
GamerClassN7/impersonations-for-admin
Zhey-on/feature/csp-image-css-controls-6033
tortillas5/development
llm_only
vectors
McTom234/oidc-key-algorithms
captcha_example
v26.05.2
v26.05.1
v26.05
v26.03.5
v26.03.4
v26.03.3
v26.03.2
v26.03.1
v26.03
v25.12.9
v25.12.8
v25.12.7
v25.12.6
v25.12.5
v25.12.4
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🔨 Feature Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#5264
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Pjirlip on GitHub (Apr 17, 2025).
Describe the feature you'd like
I propose introducing a feature in BookStack that allows dynamic replacement of placeholder variables within page content using URL parameters.
This concept is inspired by the Mailcow documentation, where placeholders like ${MAILCOW_HOSTNAME} are automatically replaced with values provided through the URL.
Simple example:
In BookStack, this could be implemented by using placeholders such as {{VAR_NAME}} within the page content. When a page is accessed with corresponding URL parameters (e.g., ?VAR_NAME=example.com), these placeholders would be replaced with the specified values.
Describe the benefits this would bring to existing BookStack users
This feature would enable the creation of generic documentation templates that dynamically adapt to specific use cases. Users could view personalized content without the need to create multiple nearly identical pages.
For instance, guides or configuration instructions could include variable placeholders that display specific information based on the provided parameters. This approach enhances the flexibility and reusability of documentation content and significantly reduces maintenance efforts.
This feature aligns with previous discussions in the BookStack community, such as the request for global variables that load in-line with documentation text
Can the goal of this request already be achieved via other means?
As far as I know, it is not possible.
Currently, BookStack does not support dynamic placeholder replacement in page content via URL parameters.
While it's possible to manually create separate pages for different use cases or utilize custom scripting outside of BookStack to generate content dynamically, these approaches are not efficient or scalable. Implementing native support for dynamic placeholders would provide a more streamlined and maintainable solution within the BookStack platform.
Have you searched for an existing open/closed issue?
How long have you been using BookStack?
Under 3 months
Additional context
No response
@ssddanbrown commented on GitHub (Apr 17, 2025):
Hi @Pjirlip,
This could potentially be achieved via methods of customization. Either some custom JavaScript added via the “Custom HTML Head Content” customization setting to make replacements on page load, or via the visual theme system to override the page display view and make replacements via PHP, or via the logical theme system to handle some form of custom include tags to perform the desired replacements.
Otherwise, due to limited past request and multiple workaround options, I probably wouldn't see it worth being something to be added to the core project.
If you'd like, I could maybe produce a basic JavaScript hack example? If so, what would you like to happen if the variable is not provided as a URL parameter? The variable blanked? Or left as-is?
@Pjirlip commented on GitHub (Apr 17, 2025):
Hi @ssddanbrown ,
Thanks a lot for your super quick response!
You're absolutely right—I hadn't considered the possibility of adding custom JavaScript via the "Custom HTML Head Content". Given this option, the feature request is indeed obsolete, as the intended functionality can easily be implemented on the frontend with a bit of JavaScript.
To answer your question: yes, if no parameter is provided, the default value should be used.
In the meantime, I've already put together a function to handle this.
In case someone else stumbles upon this ticket and needs the same functionality, here's a code snippet they can place in the head:
This will replace any text formatted like "{{ parameter : default }}" with either the provided parameter value from the URL or the default value.
I close the ticket accordingly.
Thanks again and best regards!