layouts/index.html :
{{define "main"}} {{ $products := .Site.RegularPages.ByTitle "Section" "products" }} {{with .Params.banner}} [...] <div class="dropdown-menu"> {{ range (where $products ) }} <a class="dropdown-item " href="{{ .Permalink }}">{{ .Title }}</a> {{ end }} [...]Produce este error:
ERROR: executing "main" at <.Site.RegularPages.ByTitle>: wrong number of args for ByTitle: want 0 got 2De acuerdo, intentemos eliminar esos dos argumentos (necesarios), supongo.
{{ $products := .Site.RegularPages.ByTitle }}Ahora, el error dice:
ERROR: executing "main" at <where>: wrong number of args for where: want at least 2 got 1 ¿Que está pasando aqui? El primer bit de código funciona bien en mis layouts/header.html , pero ahora Hugo parece estar confundido.
Te estás perdiendo una instrucción where. $productos es una variable
.Site.RegularPages.ByTitle <- isn't a value.Por lo tanto los errores son claros, ¿no?
Pero para manejar su punto original:
Está a medio camino entre asignar una variable y ejecutar una función.
Asi que:
$products := .Site.RegularPages <- existing "Array/Map/Slice" assigned to a variable.ByTitle es un parámetro para pasar a una función (creo).
Si desea esa agrupación organizada por título, que sería una función para ejecutar antes de asignar a una variable.
Recorre las páginas normales por título como desee:
{{range .Site.RegularPages.ByTitle}} {{ . }} {{ end }}
Si aún desea una "matriz" ordenada por título: consulte los documentos:
https://gohugo.io/functions/where/ (which I find to be excellent) and https://gohugo.io/functions/sort/#readoutUsarías Ordenar. También podrías simplemente hacer esto:
{{range where .Site.RegularPages.ByTitle "Section" "products" }} {{ . }} {{ end }}O más específicamente:
{{ $product := where .Site.RegularPages.ByTitle "Section" .Section }}Resumen: para responder a su pregunta: su código no funciona porque está mezclando la asignación de una variable con la ejecución de una función.
Tiene casi una instrucción where en la asignación de la variable. Por eso los errores que estás recibiendo.
Notas adicionales:
Como no tengo acceso a su repositorio, realmente no sé lo que está tratando de hacer, le sugiero que use los documentos anteriores para ayudarlo.
El "error anterior" que creo que está tratando de resolver es esta declaración "con" de .Params.Banners, ya que está "eliminando el contexto". Creo que hay una lógica defectuosa allí.
Sin embargo, si aún desea evitar esto, use "ordenar" para ordenar el valor o $productos (asignándole las páginas regulares con la instrucción where).