diff --git a/src/main/java/run/halo/app/core/freemarker/tag/MenuTagDirective.java b/src/main/java/run/halo/app/core/freemarker/tag/MenuTagDirective.java
index 2b9823169..806c53471 100644
--- a/src/main/java/run/halo/app/core/freemarker/tag/MenuTagDirective.java
+++ b/src/main/java/run/halo/app/core/freemarker/tag/MenuTagDirective.java
@@ -50,6 +50,10 @@ public class MenuTagDirective implements TemplateDirectiveModel {
String team = params.get("team").toString();
env.setVariable("menus", builder.build().wrap(menuService.listByTeam(team, Sort.by(DESC, "priority"))));
break;
+ case "treeByTeam":
+ String treeTeam = params.get("team").toString();
+ env.setVariable("menus", builder.build().wrap(menuService.listByTeamAsTree(treeTeam, Sort.by(DESC, "priority"))));
+ break;
case "count":
env.setVariable("count", builder.build().wrap(menuService.count()));
break;
diff --git a/src/main/java/run/halo/app/service/MenuService.java b/src/main/java/run/halo/app/service/MenuService.java
index 672b5ef31..e7d2942fc 100644
--- a/src/main/java/run/halo/app/service/MenuService.java
+++ b/src/main/java/run/halo/app/service/MenuService.java
@@ -47,6 +47,15 @@ public interface MenuService extends CrudService