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}} · {{.Date.Format "January 2, 2006"}}</a></h3> {{ end }} </div> </section> </li> {{end}} {{end}} </ul> {{ end }}
https://www.php.cn/link/1330fef5fe4f742c1918c585c2da13b3:一个>
컨텍스트(일명 "포인트")항상 {{ . }}
현재 컨텍스트를 참조한다는 것입니다.
{{ . }}
으아악
.pages
中的点具有第一个 range
操作中当前项目的值。该值的类型是字符串,并且它没有字段 pages
。这就是为什么它失败了,execute of template failed at <.pages>: can'tvaluate field pages in type string
한 가지 가능한 수정 방법은
$.
访问全局上下文:.pages
==> $.pages
제외 섹션을 나열하는 것이 더 나은 해결책일 수도 있습니다. 그러면 더 많은 폴더를 추가할 때 코드를 수정할 필요가 없습니다.
위 내용은 Hugo에서 여러 섹션을 조건부로 렌더링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!