Varlık özellikleri için alan biçimlendiricileri nasıl uygulanır?


16

Bir sınıf genişletilmiş tanımlanmış ve aynı zamanda bildirilen belirli özelliklere sahip Entity API kullanarak özel bir varlık oluşturdum .hook_schema()entityPropertyInfo()EntityDefaultMetadataController

Çok uzak çok iyi.

Şimdi ben kullanıcıların hook_field_extra_fields () uygulanmış ve onları ilan böylece varlıklarını görüntülerken bu özelliklerin görüntülenip görüntülenmeyeceğini ve nasıl özelleştirebilirsiniz istiyorum .

Daha sonra, Denetleyicimde EntityAPIController, özellikleri buradabuildContent() açıklandığı gibi $ content dizisine ekledim .

Aslında oldukça iyi çalışıyor ve özellikler işleniyor ve "Görüntüyü Yönet" bölümündeki düzen ve görünürlük ayarlarına saygı duyuluyor.

Ancak, etiket konumlandırmasını ( inline/above/hidden) özelleştirmek için Ekranı Yönet'e nasıl ayar ekleneceğini ve daha da önemlisi, bu özellikler için özel biçimlendiricilerin nasıl belirtileceğini anlayamıyorum.

Herhangi bir ipucu var mı?


1
Özellikler biçimlendiricileri de destekliyor mu? "Düğüm" ün "Görüntüyü yönet" altında "Başlık" olmadığından, ilk tahminim hayır olacaktır. İyi bir soru için +1.
Letharion

Varlık özellikleri biçimlendiricileri desteklemez, hayır. Tüm mekanizmayı kendiniz uygulamanız gerekir
Clive

Durumdan korkuyordum
Alex Weber

Yanıtlar:


7

" property" Alan türü sağlayan bir modül oluşturabilirsiniz . Biçimlendirilecek özelliği bir örnek ayarı olarak saklayın ve ardından bu biçime bir biçimlendirici uygulayın. Nispeten açık olmalıdır. İlişki modülünde, bunu nasıl kodlayacağınızı anlamanıza yardımcı olabilecek sahte bir alan modülü bulunur.


1
Varlık Mülkiyet Saha modülü bu yaklaşım için başka başlangıç noktasıdır.
15:15

1

Eğer görebileceğiniz gibi field_ui_display_overview_formde modules/field_ui/field_ui.admin.incsayfa Display settingile dolduracak $instancesve $extra_fields:

$instances = field_info_instances($entity_type, $bundle);
$field_types = field_info_field_types();
$extra_fields = field_info_extra_fields($entity_type, $bundle, 'display');

bu işlevde sayfayı oluşturan iki döngü vardır:

foreach ($instances as $name => $instance) {
   ...
}

ve

foreach ($extra_fields as $name => $extra_field) {
   ...
}

ve yalnızca alanlarda döngü yapan ilk döngüde labelveformatter

bu nedenle mülklerinizde bu işlevselliği istiyorsanız (@Clive'nin dediği gibi):

Tüm mekanizmayı kendiniz uygulamanız gerekir

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.