CCKフィールドを使用してアップロードした画像をブログ本文に貼り付けれるようWysiwyg ImageFieldモジュールを使用しています。
本文への貼り付けはInsertモジュールの機能が使われていますが、このときIMGタグ内のtitle属性とalt属性が空欄になってしまっています。
そこで、実際のtitle属性がどのようになるのかを調査しました。
※デフォルトのタイトルテキスト:[filefield-onlyname]_[filefield-fid]
※代替テキストも同じ値に設定
※アップロードした画像ファイル名:CA350015.JPG
※Collapsible information fields:Skip this field
条件 | 結果1 本文表示のtitle属性 |
結果2 フィールド表示のtitle属性 |
考察 |
トークンを使った場合 ImageFieldのフィールド設定 タイトルテキストを独自に指定できるようにする:チェックをはずす |
title=“” | title=“ca350015_2867” | トークンは本文には反映されずフィールド表示には反映される |
手入力した場合 ImageFieldのフィールド設定 タイトルテキストを独自に指定できるようにする:チェックをする Input type: textarea アップロード直後にタイトル”test”を手入力 |
title=“test” | title=“test” | 手入力は本文とフィールド表示ともに反映される ※手入力する前にはデフォルトのテキストに設定したトークンがそのまま表示されていた。変更していないalt属性値はそのまま[filefield-onlyname]_[filefield-fid]になっていた |
手入力する前のテキストエリアにはトークンがそのままの文字列で表示されていることから、この段階でトークンが置換されていれば、そのままInsertされることがわかりました。
さらにWysiwyg ImageFieldではUSERトークンとGlobalトークンであれば置換できました。
これは、ImageFieldではデフォルトのテキストタイトル(または代替タイトル)を使用かつTokenを導入していれば、USERトークンとGlobalトークンの置換を行うように設計されているからです。
しかし、これだと追加分のトークンが置換されないので、コンテンツのフィールド管理画面のタイトルや代替タイトルのそれぞれの場所で表示される一覧には一致しないことになります。
これが今のWysiwyg ImageFieldでの状態です。
※通常であれば、Submitされた時点でトークンの置換がすべて行われるはずです。
仮にトークンを使うとしてもアップロードしただけの状態で使える(値が空でない)トークンがどれだけあるかが問題になります。
そう考えるとImageFieldの設計が正しいように思えます。
ためしで一時的にnodeトークンを使用しそれを置換するように書き換えしましたが、置換後の値は空のため何も表示されませんでした。
ですので、次のようなImageField Tokenモジュールを導入しても全く意味がありません。
ImageField Tokenモジュール
このモジュールを導入するとImageFieldでNodeトークンが使用可能になるとの謳い文句ですが、以下の6種のトークンが使用可能と表示されました。
※表示にはFielField Pathモジュールの機能を利用しています。
①File Token
②Book Token
③Node Token
④CCK file Token
⑤CCK text Token
⑥Global Token
※サイトのすべての使用可能トークンは/admin/help/tokenを表示すれば確認できます。
ImageFieldで使用可能は、デフォルトのタイトルテキストや代替テキストの箇所に表示が増えるだけのことであって、トークンの置換自体は別で行うので、Wysiwyg ImageFieldのように画像貼り付け時にImageFieldを利用するケースでは追加トークンの置換はできません。
ImageField Tokenモジュールについては、モジュール名がやりたいことに必ずマッチしているとはいえない例でもあります。
そのほかいろいろモジュールを試しましたがうまくいきませんでした。
私の場合は、altやtitleにファイル名を設定したいだけですので、InsertでIMGタグを生成する箇所をカスタマイズするほうがシンプルで確実なようです。
その場合でも、デフォルトのタイトルと代替テキストはファイル名になるようなトークンを設定していれば、Viewsで不具合になることはなさそうです。