a-blog cmsでIFブロックが正しく動作しなかったりページが崩れた場合の原因
しばらくハマったので共有します。
以下の条件でIFブロックが正しく動作しなくなります。
- 条件分岐=IFブロックの引数にカスタムフィールドを使用している
- カスタムフィールドの値の改行コードを除去していない
つまり、該当のIFブロックをレイアウトに使用していると、入力内容に改行コードが入った時点でページが崩れます。
経緯
発端
リード文を作成するテンプレートを作っていました。カスタムフィールドは仮に {sample_text} とします。
複数行フィールド{sample_text}には文字サイズの調整などでspan要素が入る可能性があり、敢えてエンコードしていません(校正オプション [raw] を付与しています)。
また、見出しを使用しない可能性があるため、IFブロックで内容が入力されたかの判定を含めています。
acms_if_not_delnl.html
<!-- BEGIN_IF [{sample_text}/nem] -->
<div class="sample-text">{sample_text}[raw]</div>
<!-- END_IF -->
問題の発生
当初はこれで問題なかったのですが、コードを読みやすくするために改行を入れたら、サイト全体が崩れました。
解決
a-blog cmsの校正オプションには、改行コードを除去する [delnl] があります。これをIFブロックの引数のフィールドに付与したところ不具合が解消しました。
「空ではない」ことが判明すればいいのですから、最初からこうしておくべきでした。むしろHTMLタグも除去していいかもしれません。
acms_if_delnl.html
<!-- BEGIN_IF [{sample_text}[delnl]/nem] -->
<div class="sample-text">{sample_text}[raw]</div>
<!-- END_IF -->
参考
Author And Source
この問題について(a-blog cmsでIFブロックが正しく動作しなかったりページが崩れた場合の原因), 我々は、より多くの情報をここで見つけました https://qiita.com/webbingstudio@github/items/e72f1f91c073b04750e0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .