0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

a-blog cmsでIFブロックが正しく動作しなかったりページが崩れた場合の原因

Last updated at Posted at 2020-12-21

スクリーンショット 2020-12-15 13.44.16.png
しばらくハマったので共有します。
以下の条件で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 -->

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?