PageFactory (Kirby Plugin)

Page Template(s)

Pages to be rendered by PageFactory need to use a meta-file named z.txt (e.g. content/1_home/z.txt).
Thus, Kirby invokes the template site/templates/z.twig, which causes Twig to render the page.

To use multiple templates, just use another name for the meta-file and define a correspondingly named Twig template, as you would normally do in Kirby.

Sample Template

File sample.twig:

<!doctype html>
<html lang="{{ page.lang }}">
<head>
  <meta charset="utf-8">
  <title>{{ page.headTitle }}</title>

  <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1">
  <meta name="generator" content="{{ page.generator }} (on PHP {{ page.phpVersion }})">

  {{ page.headInjections|raw }}
</head>

<body id='pfy' class='pfy-default-styling {{ page.bodyTagClasses|raw }}' {{ page.bodyTagAttributes|raw }}>

<div class='pfy-page'>

  <header class='pfy-header'>
    {{ nav({ wrapperClass: 'pfy-primary-nav', type: 'top' }) }}
  </header>




  <!-- === page content =============== -->
  <main id='main' class='pfy-main'>

    {{ page.pageContent | raw }}

  </main>
  <!-- === /page content =============== -->



  <footer class="pfy-footer">
    <div class="pfy-footer-left">
      {{ page.langSelection|raw }}
    </div>

    <div class="pfy-footer-center">
    {{ page.adminPanelLink|raw }}
    </div>

    <div class='pfy-footer-right'>
    {{ page.loginButton|raw }}
    </div><!-- /pfy-footer-right -->
  </footer>




  <div class="pfy-small-screen-header pfy-small-screen-only" style='display: none;'>
    {{ page.smallScreenHeader|raw }}
  </div><!-- /pfy-small-screen-header -->


  {{ prevnextlinks() }}

</div><!-- /.pfy-page -->



{{ page.bodyEndInjections|raw }}
</body>
</html>

Variables in Templates

Use {{ page.myvar }} in the Twig template for any variable elements.
If variables contain HTML, you need to write {{ page.myvar | raw }} instead.

Note:
This applies only to Twig templates, in .md files omit the page. selector, just write {{ myvar }} instead.

Useful variables:

  • {{ page.lang }}// the language code, e.g. 'en'
  • {{ page.kirbyPageTitle }}// page-title as determinded by Kirby
  • {{ page.kirbySiteTitle }}// site-title as determinded by Kirby
  • {{ page.headTitle }}// title as rendered by PageFactory #)
  • {{ page.generator }}// reference to Kirby and PageFactory
  • {{ page.phpVersion }}// version of PHP currently running
  • {{ page.langSelection|raw }}// autmatically generated selection menu for supported languages
  • {{ page.adminPanelLink|raw }}// link to the Kirby Panel (label from {{ pfy-admin-panel-link-text }}*))
  • {{ page.loggedIn|raw }}// who is logged in
  • {{ page.loginButton|raw }}// login icon
  • {{ page.webmasterEmail|raw }}// automatically derived (guessed) from domain, if undefined
 

*) Define/override variables via site/custom/variables/myvars.yaml (see Variables).

#) To customize the page title, use a variable definition such as

headTitle: '{{ kirbyPageTitle }} | {{ kirbySiteTitle }}'