ロゴ画像:株式会社Gazi工房

a-blog cms:校正オプションstriptagsが効かない時の対処法

  • a-blog cmsのカスタムフィールド「リッチエディター」や「インラインエディター」を使って、htmlタグを取り除きたい時に使う校正オプションの使い方について

任意の位置に、リンクや強調を挿入できるカスタムフィールド

a-blog cmsのカスタムフィールドで、更新者の任意の文字にリンクや強調などを入れたい時は、「インラインエディター」または「リッチエディター」を使うと、再現できます。

<table class="acms-admin-table-admin-edit">
  <tr>
    <th>インラインエディターテスト</th>
    <td>
      <textarea name="test" class="js-lite-editor-field acms-admin-form-width-full">{test}</textarea>
      <input type="hidden" name="field[]" value="test" />
    </td>
  </tr>
</table>
<table class="acms-admin-table-admin-edit">
  <tr>
    <th>インラインエディターテスト</th>
    <td>{test}[raw]</td>
  </tr>
</table>

校正オプションstriptagsを使って、htmlタグを表示したり、取り除いたり

「リッチエディター」や「インラインエディター」でカスタムフィールドを作り、校正オプションを使えば、

  • Aのページでは、htmlタグを生かしたまま出力
  • Bのページでは、htmlタグを取り除いて入力したテキストのみ出力

といったこともできます。

Aのページの場合は、カスタムフィールドメーカーで表示された出力ソースを入力すれば大丈夫なのですが、Bのページの場合は、校正オプションのstriptagsを使います。 しかし、以下のように指定しても、htmlのタグがテキストとして表示されてしまいます。

<p>{test}[striptags]</p>

まずは正解から。htmlタグを取り除きたい時は、以下のようになります。

<p>{test}[raw|striptags]</p>

原因は、「Ver. 2.11 からの校正オプションの仕様変更により、校正オプションを指定していてもエスケープされるため、校正オプションが[striptags] のみだと、エスケープされてから striptagsが動作するので、タグと認識されずHTMLが削除されない」とのことでした。

htmlのタグがテキストとして表示されてしまう際の実行の流れは以下の通りとなります。

  1. &lt;p;&gt; テキスト&lt;/p;&gt; にエスケープ。
  2. 変換されたものに対してstriptagsが動作。
  3. (エスケープされているため)タグがないので、なにも起きない。

そのため、校正オプションのrawを併用して、エスケープさせない状態でstriptagsを動作させる必要があるとのことでした。


こちらについて、アップルップルのスタッフの方にご指南いただきました。 ありがとうございました!


最新記事

年別の記事一覧