英文:
Hugo (go static site generator) list for specific URLs
问题
假设我有以下结构:
content
- blog-folder-1
-- blog-article-1-1.md
-- blog-article-1-2.md
- blog-folder-2
-- blog-article-2-1.md
-- blog-article-2-2.md
然后我还有一个layouts/_default/list.html
文件,每当我访问example.com/
、example.com/blog-topic-1/
和example.com/blod-topic-2/
时,它都会被调用。
所以我遇到的问题是,我不希望layouts/_default/list.html
文件为这些不同的路径生成相同的内容。
我通过在.md文件中添加++ displayHomepage = "true" ++
以及在list.html
文件中添加{{ range $index, $page := first 50 (where .Site.Pages.ByPublishDate ".Params.displayHomepage" "true") }}
来解决只在主页上显示特定文章的问题,但是我不知道在访问example.com/blog-folder-1/
时如何不显示blog-article-2-1.md
。
非常感谢任何帮助 <3
英文:
let's say I have the following structure
content
- blog-folder-1
-- blog-article-1-1.md
-- blog-article-1-2.md
- blog-folder-2
-- blog-article-2-1.md
-- blog-article-2-2.md
Then I also have the layouts/_default/list.html
file which will be called every time I visit the URLs example.com/
, example.com/blog-topic-1/
, and example.com/blod-topic-2/
So the problem I have is that I don't want the layouts/_default/list.html
file to generate the same content for these different paths..
I overcame the problem of only displaying certain articles in the homepage by adding ++ displayHomepage = "true" ++
to the .md files and {{ range $index, $page := first 50 (where .Site.Pages.ByPublishDate ".Params.displayHomepage" "true") }}
to the list.html
file, but I can't figure out what to do if I don't want to display blog-article-2-1.md
when visiting example.com/blog-folder-1/
Any help would be greatly appreciated <3
答案1
得分: 1
这里的文档有点难以排序。我将链接到Hugo文档的重要主题,以便您能够阅读更多详细信息。在查看了您的内容组织后,有两个部分:
- blog-folder-1
- blog-folder-2
因此,在您的主题中,您可以为每个部分定义一个模板。如果没有提供模板,Hugo将使用默认模板。
因此,在您的布局文件夹中有以下逻辑:/layouts/SECTION/LAYOUT.html
对于您的情况,您可以定义一个默认布局。例如,如果blog-folder-2需要另一个模板,您的结构将如下所示:
layouts/
▾ _default/
single.html
▾ blog-folder-2/
single.html
如果您想在列表中过滤出一个部分,您需要使用页面变量。
在遍历站点时,您可以添加一个where子句:
{{ range $i, $p := (.Paginate (where .Data.Pages "Section" "!=" "blog-folder-2")).Pages }}
英文:
At this point the documentation is a little bit hard to order. I am going to link the important topics to the hugo documentation so that you are able to read more details. After looking to your Content Organisation there are two Sections:
- blog-folder-1
- blog-folder-2
So inside your theme you are able to define one template for each section. If there is no template provided hugo uses the default.
So inside your layouts folder there is that logic: /layouts/SECTION/LAYOUT.html
For your case you can define a default layout. When for example blog-folder-2 needs another template your structure would look like this:
layouts/
▾ _default/
single.html
▾ blog-folder-2/
single.html
If you want to filter out one section inside a list, you need to use the page variables.
At that points where you are ranging over the sites you can add a where clause:
{{ range $i, $p := (.Paginate (where .Data.Pages "Section" "!=" "blog-folder-2")).Pages }}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论