Hugo에서 여러 섹션을 조건부로 렌더링

WBOY
풀어 주다: 2024-02-08 23:42:22
앞으로
953명이 탐색했습니다.

在 Hugo 中有条件地渲染多个部分

Hugo에는 조건에 따라 여러 부분을 렌더링하는 매우 유용한 기능이 있습니다. 이 기능을 사용하면 특정 상황이나 조건에 따라 페이지의 특정 부분을 표시하거나 숨길 수 있습니다. 정적 웹 사이트를 구축하든 동적 웹 사이트를 구축하든 이 조건부 렌더링 기능은 페이지 표시 방식을 보다 유연하게 제어하는 ​​데 도움이 될 수 있습니다. 이 기사에서는 Hugo에서 여러 부분의 조건부 렌더링을 구현하는 방법과 사용 시나리오에 대해 설명합니다.

질문 내용

홈페이지의 정적 파일을 제외한 각 폴더의 모든 마크다운 파일을 렌더링하고 싶은데, 휴고에서 Union을 사용하는 방법이 있는데 폴더 수가 많아질수록 여기저기에서 Union을 반복하므로(Union이 포함된 코드는 주석 처리되어 있고 작동 중입니다) 슬라이스를 사용하는 것이 더 나은 아이디어라고 생각했는데 슬라이스를 사용하려고 하면 다음과 같은 오류가 발생합니다.

페이지 렌더링 실패: "home" 렌더링 실패: "(디렉토리 경로)layoutsindex.html:12:19": <.pages>에서 템플릿 실행 실패: 문자열 유형의 필드 페이지를 평가할 수 없습니다.

디렉토리 구조

index.html 코드

{{ define "main" }}
<ul class="homepage-topic-sections-container">
    {{$sectionNames := slice "posts" "problems" "tutorials"}}
    {{range $index, $sectionName := $sectionNames}}
    {{ range where .Pages "Section" $sectionName }}
    {{/*
    {{ range union (union
    (where .Pages "Section" "posts")
    (where .Pages "Section" "problems"))
    (where .Pages "Section" "tutorials")
    }}
    */}}
    <li>
        <section class="homepage-topic-section">
            <h1 class="topic-heading"><a href="{{.Permalink}}">{{.Title}} </a></h1>
            <div>
                {{ range .Pages }}
                <h3><a href="{{.Permalink}}">{{.Title}} &middot; {{.Date.Format "January 2, 2006"}}</a></h3>
                {{ end }}
            </div>
        </section>
    </li>
    {{end}}
    {{end}}

</ul>
{{ end }}
로그인 후 복사

솔루션

https://www.php.cn/link/1330fef5fe4f742c1918c585c2da13b3:一个>

컨텍스트(일명 "포인트")

go 템플릿에서 가장 간과되는 개념은

항상 {{ . }}현재 컨텍스트를 참조한다는 것입니다.

    템플릿의 최상위 수준에서는 템플릿에서 사용할 수 있는 데이터세트가 됩니다.
  • 그러나 반복 내에서는 루프의 현재 항목 값을 갖습니다. 즉, 더 이상 전체 페이지에 사용 가능한 데이터를 참조하지 않습니다. {{ . }}
  • 아래 코드에서
.

으아악 .pages 中的点具有第一个 range 操作中当前项目的值。该值的类型是字符串,并且它没有字段 pages。这就是为什么它失败了,execute of template failed at <.pages>: can'tvaluate field pages in type string한 가지 가능한 수정 방법은

을 사용하는 것입니다.

$. 访问全局上下文:.pages ==> $.pages제외 섹션을 나열하는 것이 더 나은 해결책일 수도 있습니다. 그러면 더 많은 폴더를 추가할 때 코드를 수정할 필요가 없습니다.

으아악

위 내용은 Hugo에서 여러 섹션을 조건부로 렌더링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿