web-gelistirme-sc.com

Teaser'ı bir Alanın yalnızca ilk değerini görüntüleyecek şekilde sınırlama

Görüntü Alanı olan bir İçerik Türüm var. Bu alan tipik olarak 0 ila 4 değerle doldurulur. Varsayılan olarak, bu İçerik Türü için iltifat 0 ila 4 resmin tümünü çıkarır. Teaser'ı yalnızca ilk resmi görüntüleyecek şekilde nasıl ayarlayabilirim?

14
Greg

Özel bir modül oluşturun, MODULENAME yerine modülün adını ve field_image alanınızın adıyla:

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

Daha fazla bilgi için hook_entity_view () belgelerine bakın.

12
tim.plunkett

Özel kod yazmaya gerek yok.

Alan çoklu sınırı modülünü kullanmayı deneyin.

İçerik türünüz için ekran ayarlarına gitmenize ve teaser ayarlarını yalnızca belirli bir miktarda değeri görüntüleyecek şekilde yapılandırmanıza olanak tanır. Hatta değerleri atlamayı bile yapabilirsiniz, örneğin 2 ile 5 arasındaki değerleri görüntülemesini istiyorsanız

.

12
rooby

Bir teaser şablonu (yani: düğüm - CONTENT-TYPE - teaser.tpl.php) kullanıyorsanız, bu işe yarar:

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

İlk görüntüleri görüntülemek için yeni bir alan oluşturmak için hook_field_extra_fields () ve hook_node_view () kullandım, böylece orijinal görüntüler alanını kurcalamıyordum.

hook_field_extra_fields (), düğüm türünüzün ekran yönetme sekmesinde görünecek yeni alanı başlatır.

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

Ardından yeni alanınızın içeriği olacak ilk resmi eklemek için hook_node_view () kullanılır.

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

NOT: Ekran paketini etkinleştirdiyseniz, bunu ekran yönetimini yönet sekmesinden yapabilirsiniz.

1
Teegan