Hugo의 메타데이터 - 또는 태그를 키워드로 변환
TL;박사 01 명
Hugo의 Cactus Plus 테마에 키워드, 설명, 규범화된 링크의 HTML 메타데이터 요소를 추가하는 방법모든 코드는 내 blog 저장소에서 볼 수 있다.
가장 좋은 적은 좋은 적이다
블로그를 쓰기 전에 나는 내가 상당히 큰 위험이 있다는 것을 알았다. 아마도 1년 동안 블로그 내용 관리 소프트웨어를 연구하고 한 마디도 하지 않고 최종적으로 프로젝트 전체를 방치할 것이다.내가 블로그를 창설한 영감은 GuzeyWhy you should start a blog right now에서 왔기 때문에 나는 그가 한 모든 것을 이용하는 것이 좋은 계발이라고 생각한다.Hugo, 원본을 개발한 정적 사이트 생성기, 바로 이렇다.
다음 선택은 theme, 또 다른 잠재적인 시간 수신기였지만 Cactus Plus 이겼다. (돌이켜보면 2018년에 유지보수가 중단될 줄은 몰랐다.)
하지만 메타
기존의 모든 것들처럼 조정이 필요합니다. 이것은 Cactus Plus가 HTML head element 의 메타데이터를 어떻게 처리하는지와 관련이 있습니다.나는 Cactus플러스의 메타데이터 처리가 우과 생태계에서 더욱 광범위하게 복제되는지 모르겠지만, 나는 더욱 전면적인 방법을 더 좋아한다는 것을 안다.
Cactus Plus는 메타데이터를 강조하지 않을 수 있습니다.구글과 겨루고 싶은 사람들에게 많은 부분 (예를 들어 키워드) 이 남용되기 때문에, 지금은 검색엔진에 의해 자주 무시되고 있다.설령 그것이 무시되지 않았다 하더라도, 나는 어의망회 (그래?) 를 예감했다.알고리즘에 초월된다. 즉, 기계가 더 잘할 수 있을 때 왜 페이지 작성자에게 의존해서 페이지 내용을 정리해야 하는가.그러나 결국 나는 원의 원 데이터 빈틈을 보고 그 중에서 원의 원 데이터 속성을 두드리지 않는 것을 참을 수 없었다.이것은 비뚤어진 비유이지만, 네가 이해해 주기를 바란다.
그동안 골랑을 사용해 본 적은 없지만, 우과에서 마이크 댄(Mike Dane)의 멋진 퍼포먼스video tutorials를 보고 합류할 준비가 됐다고 느꼈다.
앞의 예
저자가 추가해야 할 정확한 메타데이터를 확보하기 위해서 대부분 front matter 에 포함될 것입니다.전형적인 블로그 톱뉴스의 예로 다음과 같은 몇 가지 톱뉴스가 있다.
---
title: "On metadata in Hugo - or turning tags to keywords"
date: 2021-01-01T14:35:58Z
tags: ["hugo", "html", "golang", "metadata"]
description: "How to automate metadata insertion within the HTML head element using the Hugo open-source static site generator"
draft: false
---
Hugo가 이 템플릿을 기본적으로 사용하도록 하기 위해서 새 게시물을 만들 때 공백 변수를 생성하기 위해서 루트 파일의 원형/기본값을 수정해야 합니다.md. 테마에서 원형을 편집하는 것은 다를 것이 없습니다. 루트 원형/기본값을 삭제하지 않으면.md(나는 유일하게 이런 행위를 발견한 사람이 아니다slightly confusing.부분 템플릿 헤더.html
Cactus Plus에서, 우리의 메타데이터를 출력된 HTML로 드래그하는 것을 확보하기 위해서, themes/hugo-theme-Cactus Plus/layouts/partials/head에서 찾은 일부 템플릿을 수정해야 합니다.html.다음 모든 속성은 이 파일을 수정해야 합니다.물론 다른 주제는 html을 다른 곳에 놓을 수 있습니다.
Nodejs'original 헤드.html은github의 myfinal와 함께 논할 수 있다.
키워드로 표시
Keywords:
a set of comma-separated tokens, each of which is a keyword relevant to the page
Cactus Plus 테마에서 키 문자 데이터 속성을 완성하려고 시도하지 않았습니다.그러나, 그것은 확실히 '라벨' 을 사용했다. 보아하니 네가 이미 그것을 제공하고 있는 것 같다.키워드로 변환하기 위해서 일부 템플릿 헤더의
<head>
요소에 다음 줄을 삽입했습니다.html:<meta name="keywords" content="{{ with .Params.tags }}{{ delimit . ", "}}{{ end }}" />
흥미로운 것은 Hugo 문서에서 exact example 표기 그룹을 훑어보는 방법을 제시했지만, 분노하여 사용하면 Can't iterate over <nil>
오류가 출력됩니다.고맙게도 solution는 지역사회 포럼에서 with
는 필수적이다.출력 예:
<meta name="keywords" content="hugo, html, golang, metadata" />
묘사
메타데이터 속성description은 다음과 같이 정의됩니다.
a free-form string that describes the page. The value must be appropriate for use in a directory of pages, e.g. in a search engine.
Cactus Plus는 일부 템플릿 헤더의 이 행을 사용하여 메타데이터에 설명을 삽입합니다.html:
{{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
그러나 이것은 configuration file에 설명집을 삽입한다. 즉, 전체 사이트의 설명(내 예는'자유직업자 소프트웨어')이지 토론한 페이지와 관련된 설명이 아니다. (따라서 이 페이지에 대해'Hugo 소스 오픈 정적 사이트 생성기를 어떻게 사용하여 HTML 헤드 요소에 메타데이터를 자동으로 삽입하는가')이런 상황에서 캐시 플러스의 행동은 웹 사이트가 아닌 위에서 언급한 페이지의 규범과 일치하지 않는다는 말도 나올 수 있다.따라서 이 행을 다음과 같이 바꿉니다.<meta name="description" content="{{ if .Params.Description }}{{ .Params.Description }}{{ else if .Site.Params.Description }}{{ .Site.Params.Description }}{{ else }}Freelance software{{ end }}" />
있으면 front matter description 속성을 삽입하고, 그렇지 않으면 기본적으로 설정 파일 설명을 하며, 그 중 하나를 찾지 못하면 벨트와 브래킷만 삽입하고, 기본값은 '자유 소프트웨어' 입니다.출력 예:
<meta name="description" content="How to automate metadata insertion within the HTML head element using the Hugo open-source static site generator" />
사양 링크
Cactus Plus는 메타데이터로 사양 링크를 삽입하지 않았습니다. RFC 6596 The Canonical Link Relation:
The canonical link relation specifies the preferred [URL] from resources with duplicative content. Common implementations of the canonical link relation are to specify the preferred version of an [URL] from duplicate pages
다시 말하면, 두 개의 내용이 같은 페이지가 있을 때, 이것은 검색엔진으로 하여금 이 두 페이지 중 어느 것이 '권위적' 으로 여겨져야 하는지 알게 할 것이다이것은 나의 상황과 특히 관련이 있다. 나의 모든 댓글은 먼저 나에게 나누어 준 것이다. blog. 그리고 나의 메일박스에 연합한 것이다.따라서 저는 규범화된 링크let Google know가 필요합니다. 권위 있는 사본은 제 사이트에 있는 것이지dev.to가 아닙니다.
공평하게 말하자면, 이것은 Cactus Plus의 올바른 행동일 수도 있고, 예를 들어 Hugo를 통해 생성된 페이지가 권위 있는 복사본이 아니라는 것을 의미할 수도 있습니다.이것은 나에게 전혀 쓸모가 없다.
이 문제를 해결하는 방법은 매우 간단하여 머리의
<head>
소자에 삽입할 수 있다.다음 행을 클릭하십시오.<link rel="canonical" href="{{ .Permalink }}" />
출력 예:<link rel="canonical" href="https://preciouschicken.com/blog/posts/hugo-tags-to-keywords/" />
결론
나는 사람들이 글을 쓸 때 웹 디자인의 세부 사항에 빠지지 않도록 Hugo를 내용 관리 시스템으로 사용하는 것을 좋아한다.변화가 필요한 동시에 이 프레임워크는 강력한 맞춤형 커뮤니티와 활발한 커뮤니티를 제공한다. Golang과 접촉할 준비가 되어 있다면.
선인장 + (Cactus Plus) 도 사랑스러운 주제로 99퍼센트의 수요를 충족시켰다. 다만 더 이상 유지보수되지 않아서 아쉽다.
예전과 같이 아래의 평론과 피드백을 환영합니다.
Reference
이 문제에 관하여(Hugo의 메타데이터 - 또는 태그를 키워드로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/preciouschicken/on-metadata-in-hugo-or-turning-tags-to-keywords-3226텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)