この比較チェックがWindowsのボックスで機能しないのはなぜですか?

私はサイトに次のコードを設定しました。私のMac(開発版 - 実行中のライブコードと同じ)では、テンプレートは次のようになります。

{if '{current_path}'=='/'}
...
{/if}

そして、これはうまく動作します。しかし、実際のバージョンの同じコードは、単にこのif文を通過しません。

if 文の値が/として表示される前または後にページに {current_path} をレンダリングしますが、 if の内部にあります。

何が起こっているかについての手がかりは?

考慮事項:ライブサーバーはWindowsボックスです。

0
Windowsの場合、current_pathの値は何ですか?
追加された 著者 Holtorf,
OK、if文の中には何が入っていますか?周囲から条件を削除すると、コードは正しく実行されますか?
追加された 著者 Holtorf,
@foamcow Windowsのボックスの if の直前に/
追加された 著者 Guvante,
@foamcowはい完璧です。実際には動作させるためにこれをやらなければなりませんでしたが、この が動作するかどうかはわかりません
追加された 著者 Guvante,

1 答え

これはバグのように見えます。おそらく環境間で異なるPHPに関連するものでしょう。バージョン2.9以降、EECMSは条件付きの評価方法を変更します。だからこのバグはおそらく消えています。

条件式は常に次の構文を使用する必要があります。

{if current_path == "/"}
...
{/if}

しかし、 {current_path} は解析段階の終わりに解析されます。この条件は、すべてのモジュールとプラグインが実行された後に評価されます。

単に {segment_1} を確認するだけではどうですか?

{if segment_1 == ""}
...
{/if}
1
追加された