動かないときは、自分を疑う

a-blog cmsは、コアを直接改造できたりするプログラマブルなCMSと違って、基本的にシステムそのものに手をいれることはできません。
そのため、「あれ?おかしいぞ?バグ?」と思っても、十中八九、自分のテンプレートの書き方に誤りがあります。
システムそのものが壊れない安心感の反面、作法を理解していないと、意外なことができなかったりして躓くことも少なくありません。
そこで、備忘録を兼ねて、あーハマったなぁと思ったことをまとめました。
2.8になって状況が変わっている場合もあるかもしれませんが、随時修正いたします。

ビルトインモジュールの書き方は間違っていないのに、途中からモジュールの動作がおかしい

モジュールの中にIFブロックがあり、それの条件文に、改行の入ったカスタムフィールドなどを使っているかもしれない。

<!-- BEGIN_IF [{entry_meta_description}/nem/] -->
	<p>{entry_meta_description}[escape|trim(200,"...")]</p>
<!-- ELSE -->
	<p>{summary}[escape|trim(150,"...")]</p>
<!-- END_IF -->

{entry_meta_description}に改行が入っていると、カスタムフィールドが展開されたときにIF文がぶっちぎれるので、それ以降の処理がおかしくなって表示がとんでもないことになってしまう。

<!-- BEGIN_IF [{entry_meta_description}[escape|delnl]/nem/] -->
と、改行を削除する校正オプションを挿入する。

エントリーを編集しても保存されない

通常、エントリーを編集して保存すると当該ページのURLに画面が切り替わるが、保存しても編集画面に戻り、変更も保存されない。
この場合、エントリーのカスタムフィールド(/admin/entry/field.html)に自分で追加したカスタムフィールドを必須(validator#required)にしたにも関わらず、未入力のときに表示されるエラーメッセージを設定していなくて、入力していないことに気づいていない。
さらに、そのフィールドが、閉じるブロックの中に隠れていて見落としている場合も。

よく忘れること

テキストユニットの下のタグを入れるアレを変更するには

/system/ajax/emoji-edit.htmlを、/自分のテーマ/ajax/emoji-edit.htmlにコピーして編集する。

インライン要素の挿入リンクをカスタマイズする

アップロードするファイルの名前を変えたくない

@filenameのvalueを@rawfilenameにする。

<input type="hidden" name="フィールド名@filename" value="@rawfilename" />

公式サイトのドキュメントのサンプルは、ファイル名がランダムか固定かどちらかの例になっており、できないのかと思っていたら、最後にこっそり書いてあった


タグ:ノウハウ a-blog_cms