it-swarm-eu.dev

Omezte Teaser, aby zobrazoval pouze první hodnotu pole

Mám typ obsahu s obrázkovým polem. Toto pole se obvykle vyplní 0 až 4 hodnotami. Ve výchozím nastavení je výstupem tohoto typu obsahu výstup všech 0 až 4 obrázků. Jak mohu upravit ukázku tak, aby zobrazovala pouze první obrázek?

14
Greg

Vytvořte vlastní modul, nahraďte MODULENAME názvem modulu a field_image s názvem vašeho pole:

/**
 * Implements hook_entity_view().
 */
function MODULENAME_entity_view($entity, $type, $view_mode, $langcode) {
  if ($view_mode == 'teaser') {
    $entity->content['field_image']['#items'] = array_slice($entity->content['field_image']['#items'], 0, 1);
  }
}

Další podrobnosti najdete v dokumentaci hook_entity_view () .

12
tim.plunkett

Není třeba psát vlastní kód.

Zkuste použít modul Field multiple limit .

Umožňuje vám přejít do nastavení zobrazení pro váš typ obsahu a nakonfigurovat nastavení upoutávky tak, aby zobrazovalo pouze určité množství hodnot. Můžete dokonce provést přeskočení hodnot, například pokud chcete, aby zobrazovaly hodnoty 2 až 5

.

12
rooby

Pokud používáte šablonu s upoutávkou (tj .: zel - CONTENT-TYPE - teaser.tpl.php), funguje to:

  <?php print render($content['IMAGE-FIELD'][0]); ?>
4
nelslynn

Použil jsem hook_field_extra_fields () a hook_node_view () k vytvoření nového pole pro zobrazení prvního obrázku tak, abych nezměnil manipulaci s původním polem obrázků.

hook_field_extra_fields () inicializuje nové pole, které se objeví na kartě Správa displeje vašeho typu uzlu.

function HOOK_field_extra_fields() {
  $extra['node']['NODE_TYPE'] = array(
    'display' => array(
      'primary_image' => array(
        'label' => t('Primary Image'),
        'weight' => 0,
      )
    ),
  );
  return $extra;
}

Potom se hook_node_view () použije k přidání prvního obrázku, který bude obsahem vašeho nového pole.

function HOOK_node_view($node, $view_mode, $langcode) {
  if($node->type == 'NODE_TYPE' && $view_mode == 'teaser') {

    //make sure there are images
    if(!empty($node->field_images)) {
      $node->content['primary_image'] = $node->content['field_images'][0];

      //hide the original field with multiple images
      hide($node->content['field_images']);
    }
  }
}

POZNÁMKA: Pokud máte zapnutou sadu zobrazení, můžete to provést na kartě Správa zobrazení.

1
Teegan