wedata:400でcount()を使用した意図 その4
また更新しました。Grieverさんのコメントを私なりに生かそうとしています。
アイテム: Generic Posts Rule - データベース: AutoPagerize - wedata
今日もGrieverさんからのコメントにお答えします。
関連記事を取得したくないのではなく、関連記事を取得しそうな場合は AutoPagerize を動作させないという意図ですよね?
wedata:400でcount()を使用した意図 その2 - 1300
そもそもsiteinfoの作成に関しては優先順位をつけています。通常通り機能できればベストですが、ワーストはsiteinfoの適用によりデザインが崩れる場合です。ダミーコードが必要になるような事態は極力避けたいですね。
tanyao.hatenadiary.jp
サイトデザインの崩壊が想定される場合は機能自体を避けるべきだと考えています。機能はしませんがその分悪影響もありません。ベターと言えるでしょう。表にしておきます。
機能 | 優先順位 |
---|---|
通常どおり機能 | 1 |
機能しない | 2 |
誤ったsitienfoが機能(デザインの崩壊) | 3 |
count()を使用したのはワーストの3を回避しベターの2にするためです。ご指摘のcaseAに関しては.sub側(サイドバー)のノードが適用されるのを避けて、機能自体をしないようにしています。もしサイドバー側へ適用されれば、デザインが崩れダミーコードが必要になる可能性が高いからです。
codepen.io
当然ながら通常通り機能させたいのはやまやまですが、下手に弄ればどう転ぶものかと腰が引けています。まず最初にここから説明するべきだったのかもしれません。
追記
なんとかもっとわかりやすくできないかと弄っていたのですが、こういうケースで異常動作を防げない事に気が付きました。
codepen.io
count(//*[./article[starts-with(@id,"post-")]])=1で条件式のチェックを通ってしまいます。どうしたものでしょうか。
追記2
なんとか対応したつもりです。これだけ頭を使うのは久しぶりですね。
http://wedata.net/items/400?rev=154714
追記3
Grieverさんからこのエントリにコメントをいただきました。
数える対象を間違えている気がします。
取得するのは『article が複数ある場合』なので数えるべきは『article を複数もつ親』では無いでしょうか?テストケースと『article を複数もつ親』が複数ある場合は動作しない例を用意しました。
wedata:400でcount()を使用した意図 その4 - 1300
https://codepen.io/Griever2/pen/YzqGNNQ
ありがとうございます。これだけ多くのテストケースを書かれている労力を考えると私より大変な思いをされている気がします。お疲れさまです。
articleとidの関係が2倍で取得する場合の条件式をより厳しくしました。
アイテム: Generic Posts Rule - データベース: AutoPagerize - wedata
article 4 id 2やarticle-id 4 article 2に関してはこれで対応できるはずです。問題はEntry + subとEntry 非 article + subですね。少しだけ覚悟を決める時間をください。