Drupal 8 Писане на приставка за поле за Display Suite
В последната статия написах как да създам потребителски полета DisplaySuite в Drupal 7. След това реших да видя и разбера как работят в Drupal 8. И в тази статия вече ще ви кажа как да създадете същите полета, но в реалностите на Drupal 8.
Какво се е променило и как работят
Подходът се промени. Сега, както повечето други кукички, hook_ds_fields_info() е заменен от система с плъгини. Това е наистина удобно и ви позволява да поддържате модула чист и чист. Това между другото решава проблема с изобилието от код във файла, за който говорих в статия за D7.
Display Suite предоставя два вида добавки DsField и DsFieldTemplate. Имайте предвид, че само DsField се използва за създаване на полета. Може би си мислите, че DsFieldTemplate е заместител на DS_FIELD_TYPE_THEME, но не е така. Този тип плъгин ви позволява да декларирате манипулатори на полета. Ако сте запознати с DS, сте видели, че е възможно да изберете шаблон на поле след активиране на съответната функция. След това се появи избор: Пълно нулиране, Експерт, Минимално - това са те и този тип плъгин ви позволява да ги добавите там.Всички полета вече се декларират чрез един плъгин.
Тъй като сега изобщо няма типове полета, всичко зависи от това какво искате да върнете, просто ще дам различни примери, демонстриращи различни възможности.
P.s. по-нататък в кода се разбира, че модулът, в който е написан кодът, се нарича dummy.
Пример No1 - набор от минимум
Този пример показва минимален набор. В който декларираме поле и показваме данни в него, работейки с обекта.
Нека създадем поле за статията на статията, което ще показва броя на думите в статията.
Информацията за полето се посочва като всички останали в анотацията към класа.Плъгинът приема следните данни:
- id : име на полева машина. Малки букви, латински букви и подчертаване.
- title : Четимо за човека име за полето, само етикет за администратора.
- entity_type : Името на обекта, за който е приложимо полето. Същността е една!
- доставчик : Посочете кой предоставя полето, в този случай името на нашия модул.
- ui_limit : bundleview_mode - посочете за кои подтипове на обект и неговите изходни формати ще бъде налично полето. Използвайте знака * за стойността „всички“. Множеството стойности са посочени в следния формат: