値のない MTIf / MTUnless が親ノードの値を評価してしまう

Description

■内容
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

Environment

■Movable Type のバージョン
8.5.0

■サーバーの OS とそのバージョン
MTクラウド

■データベース・ソフトウェアの種類とそのバージョン

■お使いの文字コード

■お使いのプラグイン名

■お使いのブラウザとそのバージョン

Activity

Show:

Chieko MatsuoFebruary 25, 2025 at 11:38 PM

田島 誠 様

フィードバックありがとうございます。

当方の環境で確認したところ、ご報告いただいた現象が再現することを確認しました。
早速バグデータベースに登録の上、修正を検討いたします。

ありがとうございました。

MTQAチーム

Duplicate

Details

Assignee

Reporter

Created February 25, 2025 at 7:42 AM
Updated February 25, 2025 at 11:38 PM
Resolved February 25, 2025 at 11:38 PM