Duplicate
Details
Assignee
mtbugs@sixapart.commtbugs@sixapart.comReporter
mtbugs@sixapart.commtbugs@sixapart.comLabels
Details
Details
Assignee
mtbugs@sixapart.com
mtbugs@sixapart.comReporter
mtbugs@sixapart.com
mtbugs@sixapart.comLabels
Created February 25, 2025 at 7:42 AM
Updated February 25, 2025 at 11:38 PM
Resolved February 25, 2025 at 11:38 PM
■内容
MT8.5.0のリリースノートにあります
「静的生成時にMTタグ MTElseIf で添字やキーを引き継がない問題を修正しました ()」
この修正により発生しているのではと思われますが、MTIf / MTUnless では値の指定がない場合、本来(これまでのバージョンでは) False として扱うため、特定の範囲内の置換などを目的として値の指定をいれずに MTUnless を使うケースを見かけますが、そういったケースでも直前の value を引き継いでしまい結果的に、挙動が変わってしまっています。
たとえば
こういったテンプレートでは、どちらの MTIf も true ですので、これまでのバージョンでは
という結果になりますが、MT8.5.0では直前の(上位の) value が評価されてしまうため
という出力になります。
値を引き継ぐのは、MTElse / MTElseIf だけ(MTElse も同じタグハンドラなので)にすべきかと思われますので
https://github.com/movabletype/movabletype/commit/759ef8ea9df5a3410f34fa9648ec3f787ae684b3
こちらのContextHandlers.pm の 1711行目からの
は
のような処理が無難なのではと思います。
いくつか影響がでていることの連絡があり、フィードバックした次第です。
確認いただけますと幸いです。
■手順
■期待する結果
■実際の結果
「内容」を参照ください。
報告者: 田島 誠
メール: taz@m-logic.co.jp