2023-01-30 日誌
プレイしたゲーム
- 海腹川背・旬
- 前作の経験値は多少残っている
リンク
ウィッシュリストに入れたゲーム
- EL NE RUE
- ちょい前の記事を見てやろうとしていたので
- Tokyo Stories
- 画が特殊なので見てみたい
tags.njkで使っているtagcloudは第一引数にtagsを取れるはずなので、そこでフィルタリングしたものを渡してみる
{% set array = [] %}で配列を作って渡すとエラーを吐く。site.tagsと構造が違うのかもしれない
公式サイトではarrayと言っているんだけど、これがNunjacksで作れる配列とイコールかは不明。
enjine.jsにhelperとしてメソッドを追加するhexo.extend.helper.registerを使えば、任意のJavaScript関数を埋め込むことができる。
1 | // engine.js |
多分、hexo/lib/hexo/index.jsで作っているDatabaseからなんやかんや生成している気配を感じる
なお、内部的にはwarehouseのDatabaseを使っている模様。db.jsonのTag以下にあるものをもとに引っ張りだしてくるgetter関数を定義して、それがLocales経由でobjectになっている。
実態としてはDatabaseに対してクエリを飛ばした結果であるdb.model('Tag').filter(tag => tag.length)であると思われる。
良くない。なぜならsite.tagsは共有化されたものなので
site.tagsはこれまでの情報からwaterhouseのQueryであることが分かっている
つまり、上記のゼロ参照タグをはじくためにも使っているfilterが使える
それを返せば、それは同じくQueryだし、破壊的変更にもならない
mapでタグ名を編集したかったんだけど、mapの返り値が配列なので使えない
なので、dataを直接いじってみる
以下だと、tagsに破壊的変更を加えることになる
多分そのページ単位で閉じるので影響は軽微だけど、何とかしたいところ
1 | const regExp = new RegExp(regTxt); |
以下で一応回避できる。なんとなくまずい気もするけど、問題が起きてから考える。
1 | let result = tags.filter(it => regExp.test(it.name)); |