Alan değerini biçimi de dahil olmak üzere nasıl oluşturabilirim?


9

Bir alan değeri ve biçimini veritabanından okuyorum. Bu değeri biçim ile nasıl oluşturabilirim?

Yanıtlar:


36

Alan API'sinin nasıl çalıştığını incelemek için çok zaman harcayabilirsiniz, ancak veritabanını kendiniz sorgulamak yerine alan içeriğini oluşturmak için gerçekten Alan API'sini kullanmanız gerekir. Baypas edildiğinde Eski Tanrıları uyandıracak alanlara çok fazla kapsülleme ve soyutlama eklenmiştir.

Alan API'sını kullanarak, biçimlendirilmiş alanın tamamını, etiket ve tüm değerlerle birlikte istiyorsanız, kullanmak istediğiniz field_view_field():

$nid = 1;
$node = node_load($nid);
$output = field_view_field('node', $node, 'field_foo');

// $output is a render array, so it needs to be rendered first
print render($output);

Bir alandaki bir öğenin biçimlendirilmiş değerini görüntülemek istiyorsanız field_view_value(), biraz daha ilgili olan kullanmanız gerekir :

// Must load field content for entity before using field_view_value()
$fields = field_get_items('node', $node, 'field_foo');

// $index corresponds to the value you want to render. First value = 0.
$index = 0;
$output = field_view_value('node', $node, 'field_foo', $fields[$index]);

print render($output);

Alan örneği için belirtilen varsayılan dışında bir biçimlendirici kullanmak isterseniz, veya $displayparametresinden birini kullanarak bunu iletin :field_view_field()field_view_value()

$display = array('type' => 'my_formatter');
$output = field_view_field('node', $node, 'field_foo', $display);

$index (Field_view_value () üçüncü parametresi) $ delta. Tek bir değer alanında bu 0 olur. Yani, $output = field_view_value('node', $node, 'field_foo', $fields[0]);veya kullanabilirsiniz$output = field_view_value('node', $node, 'field_foo', $fields[$delta]);
johirpro

0

api'yi kontrol ederek, sanırım bunu aradınız. (Zaten kodu test etmedim)

$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);

// render the field
drupal_render($the_field);

güncelleme: yinelenen cevap, sadece beni silebilir. Bu yanıtı yazarken diğer cevap gönderildi.


0

Özel Biçimlendiriciler modülünü kullanıyorsanız , biçimlendiricinizin makine adından önce 'custom_formatters_' önekini eklemeyi unutmayın:

$display = array('type' => 'custom_formatters_my_formatter');

0

Görünüşe göre bunun anlamsal olarak nasıl çıktı verileceğini ayarlamak için şablon dosyasını düzenleyebilirsiniz:

1) Özel bir tarih fomat'ı ayarlayın ve "kısa_tarih_only" gibi bir makine adı verin. 2) Bir içerik türünün görüntüleme seçeneklerini bu biçimi kullanacak şekilde yapılandırın 3) Alan şablonunu alan gibi bir şeye geçersiz kılın - field_date_custom-content_type.tpl

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.