公開日:
TreeOrder で並び順を制御していたアイテムが非公開(下書き・公開停止・予約投稿)になったとき、テンプレートの出力からそのアイテムだけがスキップされ、公開中のアイテムは元の順番のままで表示されるようになりました。お客様からのご要望に対応した変更です。
これにより、Movable Type 標準の <mt:Contents> や <mt:Entries> と同じ感覚で TreeOrder のタグをお使いいただけます。フロント公開テンプレートに下書きが意図せず出力されてしまう潜在的な不具合も同時に解消されます。
<mt:TreeOrder> および入れ子の <mt:TreeOrderAncestors> / <mt:TreeOrderDescendants> / <mt:TreeOrderChildren> / <mt:TreeOrderParent> / <mt:TreeOrderSiblings> / <mt:TreeOrderHasChildren> / <mt:TreeOrderHasParent> は、デフォルトで公開ステータスが「公開」のアイテムのみを出力します。limit / offset および <mt:TreeOrderIsFirst> / <mt:TreeOrderIsLast> の判定基準を、実際に出力されるアイテム数に揃えました。非公開アイテムが含まれていても期待どおりの件数で動作します。<mt:TreeOrder> に include_unpublished 属性を追加しました。include_unpublished="1" を指定すると、v1.1.0 以前と同じ「全ステータスを出力する」挙動を復元できます。指定した挙動は内側の関連タグにも自動的に引き継がれます。<!-- デフォルト動作: 公開中のアイテムのみ、非公開は自動スキップ -->
<mt:TreeOrder class="content_data" content_type="ニュース">
<li><mt:ContentLabel></li>
</mt:TreeOrder>
<!-- 従来挙動を維持: 全ステータスを含める -->
<mt:TreeOrder class="content_data" content_type="ニュース" include_unpublished="1">
<li><mt:ContentLabel></li>
</mt:TreeOrder>
<mt:TreeOrder> に include_unpublished="1" を追加してください。<mt:TreeOrderHasParent> も、親オブジェクトが非公開でスキップされている場合は偽を返すよう挙動を整えました。<mt:TreeOrderParent> の出力と判定結果が一致します。開発環境(Movable Type 9.1.0)で、コンテンツタイプ「Site Page」配下に以下の構造を用意し、A-1 と B を非公開に変更したうえで動作を検証しています。
デフォルト動作では A → A-1-1 → B-1 → C の順で公開中のアイテムのみが出力され、limit や <mt:TreeOrderIsFirst> / <mt:TreeOrderIsLast> も実際に出力されるアイテム基準で正しく動作することを確認しました。include_unpublished="1" を指定すれば全 6 件が出力され、v1.1.0 以前と同じ挙動になります。