3 votes

Les éléments de menu ne s'affichent pas à partir de la définition de config.toml

J'essaie de définir un menu pour l'ensemble du site qui s'affiche dans une barre de navigation bootstrap.

Le niveau supérieur du config.toml est ;

baseURL = "http://localhost/"
languageCode = "en-us"
title = "Localhost"

[menu]
    [[menu.main]]
        identifier = "page1"
        name = "page1"
        url = "/page1/"
        weight = 0
    [[main.menu]]
        identifier = "page2"
        name = "page2"
        url = "/page2/"
        weight = 1
    [[main.menu]]
        identifier = "page3"
        name = "page3"
        url = "/page3/"
        weight = 2

Le menu se trouve dans un en-tête partiel de site qui est transmis dans le contexte du site.

index.html

{{ partial "head.html" . }}

<body>
  {{ partial "site-header.html" . }}

  <div class="row">
    <div class="col-12">
      <main>
        <section>
          <h1>{{.Title}}</h1>
        </section>
      </main>
    </div>
  </div>
</body>

site-header.html

<header>
    <div class="container">
      <nav class="navbar navbar-expand-sm navbar-dark ">
        <a class="navbar-brand" href="{{ "/" | relURL}}"><img src="/images/Main-Logo-v1-1.png" class="d-inline-block align-top menu-brand-image" alt="Logo"></a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav ml-auto">
            {{ $currentPage := . }}
            {{ range .Site.Menus.main }}
              <li class="navbar-item {{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}">
                <a class="nav-link" href="{{ .URL }}" title="{{ .Title }}">{{ .Name }}</a>
              </li>
            {{ end }}
          </ul>
        </div>
      </nav>
    </div>
  </div>
</header>

La fonction {{range .Site.Menus.main }} semble n'analyser que le premier élément du tableau [[menu.main]], car l'entrée "page1" est la seule incluse dans le code html généré.

J'ai également ajouté quelques printf de débogage qui confirment que la gamme ne reconnaît que [[menu.main]] comme étant un tableau de 1.

Toute idée ou indication serait appréciée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X