lektor-website/docs/api/plugins/events/process-template-context/index.html

326 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="../../../../../static/styles.css?h=ca3aba42">
<link rel="stylesheet" href="../../../../../static/pygments.css">
<link rel="shortcut icon" href="../../../../../static/favicon.png?h=fa09bedd">
<title>process-template-context | Documentation | Lektor Static Content Management System</title>
</head>
<body class="default">
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../../../../">Lektor</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="../../../../../downloads/">Download</a></li>
<li class="active"><a href="../../../../">Documentation</a></li>
<li><a href="../../../../../showcase/">Showcase</a></li>
<li><a href="../../../../../plugins/">Plugins</a></li>
<li><a href="../../../../../community/">Community</a></li>
<li><a href="../../../../../blog/">Blog</a></li>
</ul>
</div>
</div>
</nav>
<div class="body-wrapper">
<div class="container">
<div class="row">
<div class="col-sm-3">
<ul class="tree-nav nocontent">
<li><a href="../../../../">Welcome</a></li>
<li><a href="../../../../what/">What is Lektor</a>
<li><a href="../../../../installation/">Installation</a>
<li><a href="../../../../quickstart/">Quickstart</a>
<li><a href="../../../../project/">Project</a>
<li><a href="../../../../content/">Content</a>
<li><a href="../../../../templates/">Templates</a>
<li><a href="../../../../themes/">Themes</a>
<li><a href="../../../../guides/">Guides</a>
<li><a href="../../../../deployment/">Deployment</a>
<li><a href="../../../../plugins/">Plugins</a>
<li><a href="../../../../models/">Data Modelling</a>
<li><a href="../../../../cli/">Command Line</a>
<li><a href="../../../">API</a>
<ul>
<li><a href="../../../build/">Build System</a>
<li><a href="../../../databags/">Databags</a>
<li><a href="../../../db/">Database</a>
<li><a href="../../../environment/">Environment</a>
<li><a href="../../">Plugins</a>
<ul>
<li><a href="../">Events</a>
<ul>
<li><a href="../after-build/">after-build</a>
<li><a href="../after-build-all/">after-build-all</a>
<li><a href="../after-prune/">after-prune</a>
<li><a href="../before-build/">before-build</a>
<li><a href="../before-build-all/">before-build-all</a>
<li><a href="../before-prune/">before-prune</a>
<li><a href="../markdown-config/">markdown-config</a>
<li><a href="../markdown-lexer-config/">markdown-lexer-config</a>
<li><a href="../markdown-meta-init/">markdown-meta-init</a>
<li><a href="../markdown-meta-postprocess/">markdown-meta-postprocess</a>
<li class="active"><a href="./">process-template-context</a>
<ul></ul>
<li><a href="../server-spawn/">server-spawn</a>
<li><a href="../server-stop/">server-stop</a>
<li><a href="../setup-env/">setup-env</a>
</ul>
<li><a href="../../get-plugin/">get_plugin()</a>
<li><a href="../../plugin/">Plugin</a>
</ul>
<li><a href="../../../project/">Project</a>
<li><a href="../../../publisher/">Publisher</a>
<li><a href="../../../templates/">Template API</a>
<li><a href="../../../utils/">Utilities</a>
</ul>
<li><a href="../../../../search/">Search</a>
</ul>
<div class="visible-md-block visible-lg-block">
<h4>This Page</h4>
<ul class="toc">
<li><a href="#example">Example</a></li>
</ul>
</div>
</div>
<div class="col-sm-9 doc-styling">
<h1><i class="glyphicon glyphicon-flash"></i> <code class="obj">process-template-context</code> <span class="sig">(<code>context, template=None</code>)</span></h1>
<ul class=page-meta>
</ul>
<p>This event is emitted right before a template is rendered and can be used
to inject values directly into the template context. The context is always
provided and is a dictionary that can be modified.</p>
<p>It's important to know that this is not the only way to modify the template
context. Another method is to modify the underlying <a href="../../../environment/jinja-env/" class="ref">Jinja Environment</a> on the environment directly. The
difference is that the globals from the <code>jinja_env</code> are available in <em>all</em>
templates whereas the modified template context is only available in the
toplevel template. This becomes apparent when you are dealing with imported
template macros. A macro will not have access to values you provide here
unless they are explicitly passed to it.</p>
<p>The filename of the template is passed as <code>template</code> but is only available
if the template was indeed loaded from the templates folder. There are many
more places where templates are rendered in those cases the value will
not be provided.</p>
<h2 id="example">Example</h2><div class="hll"><pre><span></span><span class="k">def</span> <span class="nf">on_process_template_context</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="o">**</span><span class="n">extra</span><span class="p">):</span>
<span class="n">context</span><span class="p">[</span><span class="s1">&#39;my_variable&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;my value&#39;</span>
</pre></div>
<br>
<p>
A list of some plugins that make use of this event is available
<a href="../../../../../plugins/tag/process-template-context/" class="ref">here</a>.
</p>
<div class="comment-box">
<h2>Comments</h2>
<div id="disqus_thread"></div>
<script>
var disqus_config = function() { this.page.identifier = "/docs/api/plugins/events/process-template-context"; this.page.url = "https://www.getlektor.com/docs/api/plugins/events/process-template-context/"; };
(function() {
var d = document, s = d.createElement('script');
s.src = '//lektordocumentation.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>
Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript"
rel="nofollow">comments powered by Disqus.</a>
</noscript>
</div>
</div>
</div>
</div>
</div>
<div class="bottomsummary">
<div class="container">
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-4 icon-bar">
<a href="https://github.com/lektor/lektor/" title="Lektor on GitHub"
><i class="fa fa-github"></i></a>
<a href="https://github.com/lektor/lektor/issues/" title="Report Issues for Lektor"
><i class="fa fa-bug"></i></a>
<a href="https://twitter.com/getlektor" title="Find Lektor on Twitter"
><i class="fa fa-twitter"></i></a>
<a href="https://gitter.im/lektor/lektor" title="Chat on Gitter"
><i class="fa fa-comment"></i></a>
<a href="https://github.com/lektor/lektor-website/tree/master/content/docs/api/plugins/events/process-template-context/contents.lr" title="View source for this page"><i class="fa fa-code"></i></a>
</div>
<div class="col-sm-8">
<a href="../../../../../license/">License & Copyright</a>
<a href="../../../../../contact/">Contact</a>
Made with <i class="fa fa-fw fa-heart" title="Heart"><span hidden>Heart</span></i> in Carinthia
</div>
</div>
</div>
</footer>
<script type=text/javascript src="../../../../../static/app.js?h=bb1b933a" charset="utf-8"></script>
<script>
((window.gitter = {}).chat = {}).options = {
room: 'lektor/lektor',
activationElement: null
};
document.write('<button class="js-gitter-toggle-chat-button">Toggle Chat</button>');
var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
if (dnt != "1" && dnt != "yes") {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-70822533-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
} else {
console.debug("Respecting Do-Not-Track, not running analytics.");
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<script async defer id="github-bjs" src="https://buttons.github.io/buttons.js"></script>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<script src="https://sidecar.gitter.im/dist/sidecar.v1.js" async defer></script>
</body>
</html>