Hi,

If I use token filter to insert a node field into it's body I have a probel if the field's formatter in token view mode is flexsldier slider. Nothing is shown.
Do you have a guess what the problem can be?

Thanks,
BT

Comments

brtamas created an issue. See original summary.

brtamas’s picture

Hi could hack the flexslider with this code in one of my custom module. But it is a bit ugly. :(


/**
 * Implements hook_field_attach_view_alter().
 */
function MYMODULE_field_attach_view_alter(&$output, $context) {
  if (
    empty($output)
    || !is_array($output)
  ) {
    return;
  }

  foreach ($output as $field_name => &$render_array) {
    if (
      !is_array($render_array)
      || empty($render_array['#theme'])
      || $render_array['#theme'] != 'flexslider'
      || empty($render_array['#view_mode'])
      || $render_array['#view_mode'] != 'token'
    ) {
      continue;
    }

    $render_array['#post_render'][] = 'MYMODULE_token_post_render_flexslider_field_token';

    $backups = array('#theme', '#states', '#attached');
    $render_array['#flexslider_backups'] = array();

    foreach ($backups as $backup) {
      if (!empty($render_array[$backup])) {
        $render_array['#flexslider_backups'][$backup] = $render_array[$backup];
      }
    }
  }
}

/**
 * Post render flexslider token.
 */
function MYMODULE_token_post_render_flexslider_field_token(&$children, &$elements) {

  if (!empty($elements['#flexslider_backups'])) {
    $elements += $elements['#flexslider_backups'];
  }

  if (isset($elements['#theme'])) {
    $elements['#children'] = theme($elements['#theme'], $elements);
    if (!empty($elements['#children'])) {
      $children = $elements['#children'];
    }
  }

  if (!empty($elements['#states'])) {
    drupal_process_states($elements);
  }

  if (!empty($elements['#attached'])) {
    drupal_process_attached($elements);
  }

  return $children;
}

darvanen’s picture

Status: Active » Postponed (maintainer needs more info)

Please explain what you mean by "if the field's formatter in token view mode is flexslider slider"? I'm having trouble following what the actual problem is here?