Conditional display of paragraphs items We use Paragraphs quite extensively in our site. We have about 10 bundles available.

What we' like to do is alter how the paragraphs are displayed on various pages; Ie, we'd like to remove bundle a and display only bundle b. Then, in an alternate view, we could have only bundle c and none others displayed.

Short of writing some page/node/paragraphs alters I'm looking for a nice clean way I can achieve this. Maybe 'view modes' for an entire paragraph.

Note paragraphs behave similarly to field collections, so any suggestions for FC are welcome also.
So, I fixed this by writing a new module that creates custom panels panes.

Using the base Panels plugin code seen here http://fourword.fourkitchens.com/article/creating-custom-panels-panes-and-use-substitution-too I created a custom panels pane.

With the custom panels pane, I added a setting for bundles;

$bundles = paragraphs_bundle_load();
$options = array();
foreach ($bundles as $key =&gt; $data) {
  $options[$key] = $data-&gt;name;
}

$form['display_bundles'] = array(
  '#type' =&gt; 'checkboxes',
  '#options' =&gt; $options,
  '#default_value' =&gt; $conf['display_bundles'],
  '#title' =&gt; t('What bundles should be displayed?'),
);


So when adding a pane in Panelizer, there is a setting for selecting which paragraph bundles are displayed.

Then, when rendering the pane, I check which bundles are allowed and then render them, returning an html block.

$nid = $args[0];
$node = $contexts['panelizer']-&gt;data;

if ($node-&gt;type == 'article') {

  $para_ids = $node-&gt;field_nova_section_main[LANGUAGE_NONE];
  $para_ids_array = array();
  foreach ($para_ids as $delta =&gt; $data) {
    $para_ids_array[] = $data['value'];
  }

  $return = '';
  $paras = paragraphs_item_load_multiple($para_ids_array);
  $idx = 0;
  $keys = array();
  foreach ($paras as $entity_id =&gt; $entity_data) {
    if ($conf['display_bundles'][$entity_data-&gt;bundle] !== 0) {
      $return .= render(field_view_value('node', $node, 'field_nova_section_main', $node-&gt;field_nova_section_main[LANGUAGE_NONE][$idx++]));
    }
    $idx++;
  }
}

$block = new stdClass();
$block-&gt;title = '';
$block-&gt;content = $return;

return $block;


So now, rather than adding the node field to a Panelized layout, I add my custom pane and select which bundles I display.