kmubiin / suaikata

Koleksi ringkas kosa kata
Other
2 stars 1 forks source link

Pengaruh kod untuk menjana pautan yang sah #48

Open kmubiin opened 5 months ago

kmubiin commented 5 months ago

Isu ini dicipta untuk melaporkan kelainan pautan yang dijana menggunakan kod Liquid. Ada dua cara yang dikenal pasti untuk menjana pautan, iaitu:

[1] menjana pautan dengan kod Liquid (rujuk Variables) dan HTML:

<a href="{{ site.url }}{{ page.url }}">tajuk</a>

[2] menjana pautan dengan kod Liquid [a] (rujuk Linking to pages) dan Markdown:

[tajuk]({% link alamat/asal/fail.md %})

Kedua-dua cara tersebut boleh menjana pautan di laman yang dijana, kecuali salah satu cara tersebut mungkin memapar pautan yang tidak laku di localhost. Perbezaan ini tidak dapat dikenal pasti apabila menggunakan pelayar web "fungsi penuh" seperti Firefox dan Chrome.

Bagaimanapun, berdasarkan laman rujukan yang kedua (Linking to pages), terdapat nota di bawah tajuk bahagian laman:

Since Jekyll 4.0 , you don’t need to prepend link and post_url tags with site.baseurl.

Umm, maksudnya... kod Liquid {{ site.url }} adalah tidak tepat dan sebaliknya {{ site.baseurl }} harus digunakan untuk menjana pautan yang setara dengan {% link ... %}--dan ya, ini telah diuji serta-merta di localhost dan disahkan benar!

~Kesimpulannya, laman bersuai (docs/bersuai.md) sewajarnya menggunakan cara [2] untuk menjana pautan bagi senarai laman.~ Kod Liquid adalah lebih ringkas dan mudah, dan juga tidak perlu bercampur aduk dengan kod HTML.

Aduhai, sekarang baru ingat balik kenapa tak guna kod Liquid sejak mula dulu... sebab GitHub Pages masih guna Jekyll 3.X [b], jadi kod Liquid tidak menjana pautan yang sah (link tag masih perlukan site.baseurl di hadapan alamat fail laman).

~Mungkin~ Ternyata boleh guna cara lain seperti ini [3] (telah diuji):

[tajuk]({{ site.baseurl }}{{ page.url }})
[tajuk](.{{ page.url }})

Kedua-dua kod di atas adalah setara, apabila diuji di localhost dan di GitHub Pages.

Perlu diingatkan bahawa kod Liquid juga bergantung pada tetapan laman _config.yml, dan nilai yang diisi pada site.url dan site.baseurl [c]. Tetapi jika alamat penuh laman terus diganti pada site.url, maka site.baseurl tidak diperlukan? Mungkin lebih baik diasingkan supaya ada pilihan untuk menjana alamat relatif berdasarkan site.baseurl sahaja.

Terbitan yang terjejas: semasa (semua terbitan sejak 0d38487 dan 2.22.1222)


[a] Barangkali kod Liquid {% ... %} dan {{ ... }} tidak boleh bersarang (nested) dalam mana-mana satu dengan yang lain; selepas diuji semula dengan teliti, laman gagal dibina di localhost juga--mungkin ujian sebelum ini buat sambil lewa, jadi terlepas pandang.

[b] Rujuk laman versi ini--yang tersenarai adalah Jekyll 3.9.5 setakat 2024-04-06 12pm +0000 (dinyatakan di hujung laman).

[c] Kedua-dua url dan baseurl dinyatakan secara lalai apabila laman dibina di GitHub Pages, sekalipun tidak diaktifkan di _config.yml. Jadi, tetapan bagi projek suaikata harus dinyahaktif dengan tanda pagar # sebagai komen yang boleh dirujuk semula.


Lagi pengesahan:

Lagi rancangan (selain laman bersuai):


Tugasan dalam isu ini: