diff --git a/src/main/java/run/halo/app/theme/dialect/PostTemplateHeadProcessor.java b/src/main/java/run/halo/app/theme/dialect/ContentTemplateHeadProcessor.java
similarity index 63%
rename from src/main/java/run/halo/app/theme/dialect/PostTemplateHeadProcessor.java
rename to src/main/java/run/halo/app/theme/dialect/ContentTemplateHeadProcessor.java
index 9c26c9f47..294a80f42 100644
--- a/src/main/java/run/halo/app/theme/dialect/PostTemplateHeadProcessor.java
+++ b/src/main/java/run/halo/app/theme/dialect/ContentTemplateHeadProcessor.java
@@ -2,6 +2,7 @@ package run.halo.app.theme.dialect;
import java.util.List;
import java.util.Map;
+import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.thymeleaf.context.ITemplateContext;
@@ -11,34 +12,39 @@ import org.thymeleaf.processor.element.IElementModelStructureHandler;
import reactor.core.publisher.Mono;
import run.halo.app.theme.DefaultTemplateEnum;
import run.halo.app.theme.finders.PostFinder;
+import run.halo.app.theme.finders.SinglePageFinder;
import run.halo.app.theme.router.strategy.ModelConst;
/**
- *
The head
html snippet injection processor for post template.
+ * The head
html snippet injection processor for content template such as post
+ * and page.
*
* @author guqing
* @since 2.0.0
*/
@Component
-public class PostTemplateHeadProcessor implements TemplateHeadProcessor {
+@AllArgsConstructor
+public class ContentTemplateHeadProcessor implements TemplateHeadProcessor {
private static final String POST_NAME_VARIABLE = "name";
private final PostFinder postFinder;
-
-
- public PostTemplateHeadProcessor(PostFinder postFinder) {
- this.postFinder = postFinder;
- }
+ private final SinglePageFinder singlePageFinder;
@Override
public Mono process(ITemplateContext context, IModel model,
IElementModelStructureHandler structureHandler) {
- if (!isPostTemplate(context)) {
- return Mono.empty();
+ Mono nameMono = Mono.justOrEmpty((String) context.getVariable(POST_NAME_VARIABLE));
+
+ Mono>> htmlMetasMono = Mono.empty();
+ if (isPostTemplate(context)) {
+ htmlMetasMono = nameMono.flatMap(postFinder::getByName)
+ .map(post -> post.getSpec().getHtmlMetas());
+ } else if (isPageTemplate(context)) {
+ htmlMetasMono = nameMono.flatMap(singlePageFinder::getByName)
+ .map(page -> page.getSpec().getHtmlMetas());
}
- return Mono.justOrEmpty((String) context.getVariable(POST_NAME_VARIABLE))
- .flatMap(postFinder::getByName)
- .doOnNext(postVo -> {
- List