# TemplateHeadProcessor Inject scripts, styles, or meta tags into the theme's `` section. > Source: [TemplateHeadProcessor](https://github.com/halo-dev/halo/blob/main/api/src/main/java/run/halo/app/theme/dialect/TemplateHeadProcessor.java) ## Usage ```java @Component public class MyHeadProcessor implements TemplateHeadProcessor { private final ReactiveSettingFetcher settingFetcher; public MyHeadProcessor(ReactiveSettingFetcher settingFetcher) { this.settingFetcher = settingFetcher; } @Override public Mono process(ITemplateContext context, IModel model, IElementModelStructureHandler structureHandler) { return settingFetcher.fetch("basic", MyConfig.class) .flatMap(config -> { if (!config.isEnabled()) { return Mono.empty(); } // Add script tag to var script = createScriptTag(config.getTrackingId()); model.add(script); return Mono.empty(); }) .then(); } private IModel createScriptTag(String trackingId) { // Build Thymeleaf model with script element var modelFactory = new ModelFactory(); var script = modelFactory.createOpenElementTag("script"); // ... configure attributes var model = modelFactory.createModel(); model.add(script); return model; } } ``` ## Ordering Use `@Order` to control execution order. Higher values execute first, allowing later processors to override earlier ones. ```java @Component @Order(100) // Higher = earlier public class HighPriorityHeadProcessor implements TemplateHeadProcessor { ... } @Component @Order(200) // Lower = later, can override above public class LowPriorityHeadProcessor implements TemplateHeadProcessor { ... } ``` ## Common Use Cases - Analytics tracking (Google Analytics, Plausible) - Code highlighting (highlight.js, Prism, Shiki) - Math rendering (KaTeX, MathJax) - SEO meta tags (OpenGraph, Twitter Cards) - Custom CSS/JS injection - Comment widgets