スポンサーリンク
Colorboxのエラーメッセージ対応

事象

colorboxモジュールを利用していますが、かなり前のバージョンから以下のようなNotice:メッセージが表示されるようになりました。

1
Notice: Undefined variable: index colorbox_field_formatter_view() (~sites/all/modules/colorbox/colorbox.module ファイル 476行).

メッセージが表示されるだけでなく、このメッセージの原因かもしれない「colorbox_multivalue_index」により、wysiwyg fieldsで画像挿入をすると生成されるtokenの影響で編集中には表示される画像が、記事を保存すると表示されなくなります。

そのため、毎回、ソースを表示して該当の箇所のtokenを削除してから保存していました。

原因

colorbox-7.x-2.3で追加された「colorbox_multivalue_index」が原因です。

何に使用されているのかもさっぱりわかりません。

Undefined index colorbox_multivalue_index in colorbox_field_formatter_view()」にはFixと記載がありますが、最後にコメントされている方と同じく、バージョンが幾度かアップされていますが全くFixしていません。

このキーワードで検索をすると稼働しているサイトで同じメッセージが表示されているのがわかります。

このNoticeメッセージ自体が問題なのかそれとも「colorbox_multivalue_index」の設定に関する原因なのかはよくわかっていません。

暫定的な対処

無効なTokenが挿入される対処

「colorbox_multivalue_index」が使用されているのは、colorbox.moduleファイル内の268行目と473行目です。

それぞれ以下のように2行をコメントにしました。

colorbox.module
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
/**
* Implements hook_field_formatter_info().
*/
function colorbox_field_formatter_info() {
  return array(
    'colorbox' => array(
      'label' => t('Colorbox'),
      'field types' => array('image'),
      'settings' => array(
        'colorbox_node_style' => '',
        'colorbox_node_style_first' => '',
        'colorbox_image_style' => '',
        'colorbox_gallery' => 'post',
        'colorbox_gallery_custom' => '',
        'colorbox_caption' => 'auto',
        'colorbox_caption_custom' => '',
        //'colorbox_multivalue_index' => NULL,
      ),
    ),
  );
}

これを見るとNULLがダメなのかなぁと思ったりしますが、どうなんでしょう。

colorbox.module
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
/**
 * Implements hook_field_formatter_view().
 */
function colorbox_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
//  $index = $display['settings']['colorbox_multivalue_index'];
  foreach ($items as $delta => $item) {
    if ($index === NULL || $index === $delta) {
      $element[$delta] = array(
        '#theme' => 'colorbox_image_formatter',
        '#item' => $item,
        '#entity_type' => $entity_type,
        '#entity' => $entity,
        '#node' => $entity, // Left for legacy support.
        '#field' => $field,
        '#display_settings' => $display['settings'],
        '#delta' => $delta,
      );
    }
  }
  return $element;
}

とりあえず、この修正により、画像貼付け時には「colorbox_multivalue_index」に関連するtokenが貼り付けられなくなったので、画像貼付けしたそのまま保存することで画像が正常に表示されるようになりました。

Noticeメッセージの対処

根本的な原意はわからないので、Noticeメッセージを抑止するようにphp.iniの設定を変更するか、drupalのレポートでフィルター設定するかになると思います。

今回は、フィルターを使いました。

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

おすすめの記事