logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Programiranje prilagođenih polja u vaš tip sadržaja

18/06/2025, by Ivan

Ponekad, kada izvučete tip sadržaja iz prilagođenog modula, možete takođe dodati polja vezana za taj tip sadržaja. Mogućnost automatskog kreiranja polja omogućava vam da brišete i ponovo instalirate na više sajtova, a da ne ostavite suvišna polja i garantuje da nećete zaboraviti da ih dodate. Postoje dva načina da ta polja dodate u vašu kodnu bazu, koje ćemo razmotriti.

Preduslovi

  • Drupal 8.0.x je instaliran.
  • Imate prilagođeni modul (ime modula u ovom primeru je foobar).
  • Imate prilagođeni tip sadržaja u modulu (molimo pratite uputstva na roditeljskoj stranici. Naziv tipa sadržaja je Car Brand).

Dodavanje dodatnih polja našem tipu sadržaja

Postoje dva načina da se ovaj korak izvrši. Možete koristiti korisnički interfejs za kreiranje polja i izvoz konfiguracije u fajlove, ili možete jednostavno napisati fajlove sami. Ja volim da koristim prvi način kako bih bio siguran da ništa nije izostavljeno, mada polja se izvoze sa prefiksom „field_“ umesto „foobar_car_brand_“ za povezivanje sa našim prilagođenim tipom sadržaja. Ovde ćemo razmotriti ručno kodiranje polja u vašem prilagođenom modulu.

Ručno kodiranje polja u vašem modulu

Kao što je ranije pomenuto, ovaj metod zahteva malo više znanja i precizno poznavanje šta polje treba da radi i kako treba da izgleda. Svako dodato polje mora imati dva YAML fajla sa informacijama o konfiguraciji. Oni se zovu ovako: field.field.node.car_brand.field_brand_information.yml i field.storage.node.field_brand_information.yml.

Uklonite prilagođeni tip sadržaja

Ako ste već omogućili modul foobar na prethodnoj stranici, sada ga uklonite.

foobar/config/install/field.storage.node.field_brand_information.yml

Ovaj fajl obaveštava Drupal da treba da kreira naše polje.

# field.storage.node.field_brand_information.yml
langcode: en
status: true
dependencies:
  module:
    - node
    - text
id: node.field_brand_information
field_name: field_brand_information
entity_type: node
type: text_with_summary
settings: {  }
module: text
locked: false
cardinality: 1
translatable: true
indexes: {  }
persist_with_no_fields: false
custom_storage: false

foobar/config/install/field.field.node.car_brand.field_brand_information.yml

Ovaj fajl obaveštava Drupal da treba da prikači naše polje našem tipu sadržaja.

# field.field.node.car_brand.field_brand_information.yml
langcode: en
status: true
dependencies:
  config:
    - field.storage.node.field_brand_information
    - node.type.car_brand
  module:
    - text
id: node.car_brand.field_brand_information
field_name: field_brand_information
entity_type: node
bundle: car_brand
label: 'Brand Information'
description: 'Više specifičnih informacija o brendu automobila'
required: false
translatable: false
default_value: {  }
default_value_callback: ''
settings:
  display_summary: false
field_type: text_with_summary

foobar/config/install/core.entity_form_display.node.car_brand.default.yml | foobar/config/install/core.entity_view_display.node.car_brand.default.yml

Oba ova fajla treba ažurirati sa prethodne stranice da uključe sva nova polja koja dodajete. Dodao sam dva dodatna polja pod nazivima „Additional_field_1“ i „Additional_field_2“ da biste videli kako izgleda sa više polja.

Napomena: Ako ne želite dodatna polja, uklonite zavisnosti i informacije o tim poljima u sledećem kodu.

# core.entity_view_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
  config:
    - field.field.node.car_brand.field_brand_information
    - field.field.node.car_brand.field_additional_field_1
    - field.field.node.car_brand.field_additional_field_2
    - node.type.car_brand
  module:
    - file
    - text
    - user
_core:
  default_config_hash: Nfnv6VMugBKl6EOqi_U0I_LQ1ZQpbNDN3a9GXHWUBz4
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
  field_brand_information:
    weight: 101
    label: above
    settings: {  }
    third_party_settings: {  }
    type: text_default
  field_additional_field_1:
    weight: 103
    label: above
    settings:
      link_to_entity: false
    third_party_settings: {  }
    type: string
  field_additional_field_2:
    weight: 102
    label: above
    settings: {  }
    third_party_settings: {  }
    type: file_default
  links:
    weight: 100
hidden: {  }
# core.entity_form_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
  config:
    - field.field.node.car_brand.field_brand_information
    - field.field.node.car_brand.field_additional_field_1
    - field.field.node.car_brand.field_additional_field_2
    - node.type.car_brand
  module:
    - file
    - path
    - text
_core:
  default_config_hash: qZE-qJ04DTTNggVVQdVOPQmpE_I69GQ_LqB32kXivVg
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
  created:
    type: datetime_timestamp
    weight: 2
    settings: {  }
    third_party_settings: {  }
  field_brand_information:
    weight: 7
    settings:
      rows: 9
      summary_rows: 3
      placeholder: ''
    third_party_settings: {  }
    type: text_textarea_with_summary
  field_additional_field_1:
    weight: 6
    settings:
      size: 60
      placeholder: ''
    third_party_settings: {  }
    type: string_textfield
  field_additional_field_2:
    weight: 8
    settings:
      progress_indicator: throbber
    third_party_settings: {  }
    type: file_generic
  path:
    type: path
    weight: 5
    settings: {  }
    third_party_settings: {  }
  promote:
    type: boolean_checkbox
    settings:
      display_label: true
    weight: 3
    third_party_settings: {  }
  sticky:
    type: boolean_checkbox
    settings:
      display_label: true
    weight: 4
    third_party_settings: {  }
  title:
    type: string_textfield
    weight: 0
    settings:
      size: 60
      placeholder: ''
    third_party_settings: {  }
  uid:
    type: entity_reference_autocomplete
    weight: 1
    settings:
      match_operator: CONTAINS
      size: 60
      placeholder: ''
    third_party_settings: {  }
hidden: {  }

Omogućite prilagođeni tip sadržaja

Sada treba da omogućite modul foobar. Ako odete na stranicu za kreiranje sadržaja, videćete da možete kreirati novi čvor tipa sadržaja „Car Brand“, koji uključuje novo polje „Brand Information“.

Dodavanje ovih polja preko korisničkog interfejsa razmatraćemo na sledećoj stranici.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.