Օգտագործողի դաշտերի ծրագրավորում ձեր կոնտենտի տիպում
Կարող է պատահել, երբ դուք օգտվում եք կոնտենտի տիպից օգտվողի մոդուլից, դուք նույնպես կարող եք ավելացնել դաշտեր, որոնք վերաբերում են այդ կոնտենտի տիպին։ Դաշտերը ավտոմատ կերպով ստեղծելու հնարավորությունը թույլ է տալիս ձեզ մի քանի կայքերում հեռացնել և տեղադրել դրանք՝ առանց ավելորդ դաշտեր թողնելու և երաշխավորելու, որ չեք մոռանա դրանք ավելացնել։ Կան երկու եղանակ, որոնք թույլ են տալիս այդ դաշտերը ավելացնել ձեր կոդային բազայում, որոնք մենք կքննարկենք։
Նախապայմաններ
- Տեղադրված է Drupal 8.0.x։
- Ունեք օգտվողի մոդուլ (այս օրինակով օգտագործվող մոդուլի անունը foobar է)։
- Ունեք օգտվողի կոնտենտի տիպ մոդուլում (Խնդրում ենք հետևել հիմնական էջի հրահանգներին։ Կոնտենտի տիպի անունը կլինի Car Brand)։
Լրացուցիչ դաշտեր ավելացնել մեր կոնտենտի տիպին
Այս քայլը կարելի է կատարել երկու ճանապարհով։ Կարող եք օգտագործել օգտվողի ինտերֆեյսը դաշտեր ստեղծելու և կոնֆիգուրացիան ֆայլերի արտահանելու համար, կամ կարող եք ուղղակի ինքնուրույն գրել ֆայլերը։ Ինձ դուր է գալիս օգտագործել առաջին տարբերակը, որպեսզի համոզվեմ, որ ոչինչ կարևոր չմնա անտեսված, սակայն դաշտերը արտահանվում են «field_» նախաբանի հետ, այլ ոչ թե «foobar_car_brand_», որպեսզի կապվեն մեր օգտվողի կոնտենտի տիպին։ Այս էջում մենք կքննարկենք դաշտերի ձեռքով կոդավորումը ձեր օգտվողի մոդուլում։
Դաշտերի ձեռքով կոդավորում ձեր մոդուլում
Ինչպես արդեն նշվեց, այս մեթոդը պահանջում է ավելի շատ գիտելիքներ և հստակ հասկացություն այն մասին, թե ինչ է դաշտը անում և ինչպես պետք է երևա։ Ամեն դաշտի համար պետք է երկու YAML ֆայլեր՝ կոնֆիգուրացիայի տեղեկություններով։ Դրանք կոչվում են field.field.node.car_brand.field_brand_information.yml և field.storage.node.field_brand_information.yml։
Հեռացրեք օգտվողի կոնտենտի տիպը
Եթե արդեն միացրել եք foobar մոդուլը նախորդ էջում, այժմ կարող եք հեռացնել այն։
foobar/config/install/field.storage.node.field_brand_information.yml
Այս ֆայլը կտեղեկացնի Drupal-ին, որ պետք է ստեղծի մեր դաշտը։
# 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
Այս ֆայլը կտեղեկացնի Drupal-ին, որ պետք է կցի մեր դաշտը մեր կոնտենտի տիպին։
# 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: 'More specific information about the car brand' 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
Այս երկու ֆայլերը պետք է թարմացվեն նախորդ էջից, որպեսզի ներառեն բոլոր նոր դաշտերը, որոնք դուք ավելացնում եք։ Ես ավելացրել եմ երկու լրացուցիչ դաշտ՝ «Additional_field_1» և «Additional_field_2», որպեսզի տեսնեք, թե ինչպես կդիտվի մի քանի դաշտերով։
Նշում. Եթե չեք ցանկանում ստեղծել լրացուցիչ դաշտեր, ջնջեք դրանց կախվածությունները և տեղեկությունները հետևյալ կոդում։
# 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: { }
Միացնել օգտվողի կոնտենտի տիպը
Հիմա պետք է միացնեք foobar մոդուլը։ Եթե գնաք «Կոնտենտ ստեղծելու» էջ, կտեսնեք, որ կարող եք ստեղծել նոր նոդ «Car Brand» կոնտենտի տիպով, և նա կունենա մեր նոր դաշտը՝ «Brand Information»։
Մենք կքննարկենք դաշտերի ավելացումը UI-ի միջոցով հաջորդ էջում։
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.