Hugo Bundle問題

使用hugo時常會有的關於文章檔案資料夾架構疑問

描述

原本在hugo上面放文章,是每篇文章一個資料夾,在其中放文章和會用到的圖片。每個文章資料夾都放在content/posts/

content/posts/
├── post1
│    └── post1.md
│    └── img1.jpg   
├── post2
│    └── post2.md
│    └── img2.jpg   
├── post3
│    └── post3.md
│    └── img3.jpg   

因為覺得全部文章直接用資料夾名稱排序,覺得未來會變得很混亂,並且不好找尋文章位置,所以改成以下的結構:使用日期當主資料夾名稱。 雖然也是可以在文章資料夾名稱加上日期前綴來區分,但感覺還是會很亂。所以開始研究page bundle怎麼處理,試著將結構改成這樣。

P.S. 在2024年8月的時候又改回hugo最原始的文章放置方式,發現全部文章放在一起,其實也不會太亂(是我寫太少文章了)。 並且使用日期當第一層資料夾名稱,我反而沒辦法一眼看出這裡面放的文章是什麼文章

content/posts/
├── 2022-08-02
│   └── post1         
│       └── post1.md
│       └── img1.jpg   
│   └── post2         
│       └── post2.md
│       └── img2.jpg   
├── 2022-09-02
│   └── post3         
│       └── post3.md
│       └── img3.jpg   

問題

看到跑出來的網頁上,載入圖片404的網址居然是還會增加一個文章名稱的資料夾,然後才存取圖片。以上面的例子來看, 打開網頁 post1頁面,網址會是domain/posts/2022-08-02/post1/post1/

而圖片是呼叫domain/posts/2022-08-02/post1/post1/img1.jpg

可是實際上到build出來的public裡面去看,這一個頁面的結構居然是長這樣

├── 2022-08-02
│   └── post1         
│       └── post1.md
│       └── img1.jpg   
│       └── post1         
│           └── index.html         

解法

因為查到的所有資料,上面寫的md都命名為index,所以試著把post1.md改名為index.md,一切就正常了,而此時public裡面的資料結構變成長這樣。

├── 2022-08-02
│   └── post1         
│       └── post1.md
│       └── img1.jpg   
│       └── index.html         

看起來可能是因為bundle是抓index.md這個關鍵字的來製作頁面,如果沒有這個檔案,會用現有的*.md的檔案,各自建立一個它名稱的資料夾,然後在裡面建立index.html。所以原本的做法才會長成奇怪的結構。

reference

comments powered by Disqus