"
## Variables in page content
Adding `expandVariables=true` to a page's front matter enables simple variables replacement, see the `pageVariables` map in
templates code for which variables are supported or to add more variables. A pattern like `${sling_tagline}` in page content
is replaced by the `sling_tagline` variable if it exists, otherwise a MISSING_PAGE_VARIABLE marker is output.
Please use a `sling.` prefix for new site-related variables in `jbake.properties`, to differentiate from JBake built-in variables.
## Front Matter
A number of Markdown front matter variables are taken into account, here's an example:
title=Tutorials & How-Tos
type=page
status=published
tags=tutorials,beginner
tableOfContents=false
~~~~~~
## Syntax highlighting
The site uses [highlight.js](https://highlightjs.org/) for that.
Highlighting can be disabled by specifying an unknown language in the `` blocks that are highlighted by default, like for example
This will not be highlighted.
## Site search
The site search is based on [Pagefind](https://pagefind.app/), which is also used by the ASF
[community](https://community.apache.org/) and [www](https://www.apache.org/) websites. Searching the source code for "pagefind" shows how the integration works.
## Other Apache projects using JBake
It's sometimes useful to ~~steal ideas~~ get inspiration from other projects using similar tools, for now we know of:
* Tamaya - https://github.com/apache/incubator-tamaya-site
* OpenNLP - https://github.com/apache/opennlp-site
* Incubator - https://github.com/apache/incubator
And [this query for the `jbake` topic](https://github.com/search?q=topic%3Ajbake+org%3Aapache&type=Repositories) might find others.
## JBake and other technotes
* Currently using 2.7.0-rc.7 via the `jbake-maven-plugin`, docs at
* That version of JBake uses [Flexmark](https://github.com/vsch/flexmark-java) as parser for Markdown and [Pegdown extensions](https://github.com/sirthias/pegdown)
* The templates use the [Groovy Markup Template Engine](http://groovy-lang.org/templating.html#_the_markuptemplateengine), other examples are provided at https://github.com/jbake-org/jbake-example-project-groovy-mte
## Useful scripts and commands
To find broken links use
wget --spider -r -nd -nv -l 5 http://localhost:8820/ 2>&1 | grep -B1 'broken link'
## Deploying when git is configured with user.useConfigOnly = true
It it possible to configure git to not inherit or infer the `user.name` and `user.email`
properties, to avoid the situation where an incorrect value is used.
However, this breaks site publishing as the git checkout no longer inherits the global
configuration settings. To still be able to publish, the following steps are needed
mvn package -Ppublish-site -Dmsg="your-msg-here"
cd target/scm-checkout
git config user.email user@apache.org
mvn package -Ppublish-site -Dmsg="your-msg-here"
We are publishing the site once, which creates the SCM checkout, and fails to push
since no `user.email` config is set. Then we manually configure this property in
the SCM checkout and try publishing again. Be careful to avoid any `clean` operations
with Maven since it will erase the initial checkout.