it-swarm-es.com

Limite Teaser para mostrar solo el primer valor de un campo

Tengo un tipo de contenido con un campo de imagen. Este campo generalmente se completará con 0 a 4 valores. De manera predeterminada, el avance para este tipo de contenido genera todas las imágenes de 0 a 4. ¿Cómo puedo ajustar el avance para mostrar solo la primera imagen?

14
Greg

Cree un módulo personalizado, reemplace MODULENAME con el nombre del módulo y field_image con el nombre de su campo:

/**
 * 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);
  }
}

Consulte la documentación de hook_entity_view () para obtener más detalles.

12
tim.plunkett

No es necesario escribir código personalizado.

Intente usar Límite múltiple de campo módulo.

Le permite acceder a la configuración de pantalla para su tipo de contenido y configurar los ajustes de presentación para mostrar solo una cierta cantidad de valores. Incluso puede hacer que omita valles, por ejemplo, si desea que muestre los valores 2 a 5

.

12
rooby

Si utiliza una plantilla teaser (es decir: nodo - CONTENT-TYPE - teaser.tpl.php), esto funciona:

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

Utilicé hook_field_extra_fields () y hook_node_view () para crear un nuevo campo para mostrar la primera imagen para no alterar el campo de imágenes original.

hook_field_extra_fields () inicializa el nuevo campo que aparecerá en la pestaña de visualización de gestión de su tipo de nodo.

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

Luego, hook_node_view () se usa para agregar la primera imagen para que sea el contenido de su nuevo campo.

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']);
    }
  }
}

NOTA: Si tiene habilitado el conjunto de pantallas, puede hacerlo en la pestaña Administrar pantalla.

1
Teegan