如何在Hugo主题上创建嵌套菜单?

3

我正在使用 Hugo 构建一个网站。但是在设置嵌套菜单时遇到了一些问题。

我正在使用 Tokiwa 主题进行项目开发。 这里 是我的仓库链接。

我想在网站的主页添加一个下拉菜单,用于显示子文件夹。以下是imperial-library 网站的示例,您可以单击“游戏书籍”,然后会打开一个列表,显示该选项的所有可用主题。例如(全部、竞技场...)如果您单击其中一个主题,它将带您进入一个页面,列出所有条目及其简短描述。您可以单击相应的条目以查看该文章。

在我的项目中,我的目录结构为:

内容 -> 写作(写作包含诗歌和故事的子文件夹)

因此,在主页上,我希望某人能够单击“写作”,然后它会展开显示“诗歌”和“故事”。然后,您可以单击其中任何一个以查看格式如下的列表页面:

诗歌1的描述 - 诗歌1的链接

诗歌2的描述 - 诗歌2的链接

诗歌3的描述 - 诗歌3的链接

我还希望将此功能添加到除写作之外的其他主题中。

我的 config.toml 文件具有以下内容:

 sectionPagesMenu = "main"

[menu]
  [[menu.main]]
    identifier = "writing"
    name = "writing"
    url = "/writing"
    weight = 1
     [[menu.main]]
    identifier = "post"
    name = "post"
    url = "/post"
    weight = 2
  [[menu.main]]
    identifier = "poems"
    name = "poems"
    url = "/category/poems"
    parent = "writing"
    weight = 1
  [[menu.main]]
    identifier = "stories"
    name = "stories"
    url = "/category/stories"
    parent = "writing"
    weight = 2

在我的layouts/index.html中

{{ define "menu-item" }}
  {{ $page := .page }}
  {{ with .entry }}
    {{ if .HasChildren }}
      <li class="{{ if $page.HasMenuCurrent "main" . }}active{{ end }}">
        <a href="{{ .URL }}">{{ .Name }}</a>
        <ul class="sub-menu">
          {{ range .Children }}
            {{ template "menu-item" (dict "entry" . "page" $page) }}
          {{ end }}
        </ul>
      </li>
    {{ else }}
      <li class="{{ if $page.IsMenuCurrent "main" . }}active{{ end }}">
        <a href="{{ .URL }}">{{ .Name }}</a>
      </li>
    {{ end }}
  {{ end }}
{{ end }}

<ul>
  {{ $page := . }}
  {{ range .Site.Menus.main }}
    {{ template "menu-item" (dict "entry" . "page" $page) }}
  {{ end }}
</ul>



我也尝试了根据hugo文档中的此示例进行操作。
当前,我的网站在使用主题时会正确显示,并且当我点击链接时,URL似乎是正确的,例如writing/poems/poem1。 然而,文件夹的显示方式不正确。
我还在hugo论坛上发了这个问题,但没有得到确切的答案。 我浏览了许多关于"hugo论坛上嵌套菜单"的主题,但仍无法完全弄清楚这个问题。
谢谢。
1个回答

1
我在Tokiwa的github上询问了这个问题。
解决方案是将custom.css和custom.js放入static/lib/文件夹中,并在baseof.html中添加两行代码。
<link rel="stylesheet" href='{{"lib/custom.css"|absURL}}' crossorigin="anonymous">
<script src='{{"lib/custom.js"|absURL}}' crossorigin="anonymous"></script>
Before </head> tag.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接