Saya perlu membangun menu utama yang merupakan subset dari menu biasa. Tim desain berpendapat bahwa akan lebih baik bagi pengguna untuk hanya memiliki tautan terpenting di menu utama dan tidak memiliki segalanya. Beberapa tautan adalah menu tingkat atas dan beberapa lainnya adalah sub menu. Untuk ini saya berharap dapat menambahkan bidang ke formulir item tautan menu sebagai drop down. Saat membuat tautan, pengguna dapat menggunakan dropdown ini untuk "promotToMainMenuAsBigLink" atau "promotToMainMenuAsSmallLink" atau biarkan tidak ada yang tidak menampilkan item di menu utama.
Saya mencari solusi yang sama dengan solusi Drupal 7 ini tetapi untuk Drupal 8.
Saya berharap dapat menambahkan kolom di tabel menu_link_content_data di samping 'diperluas'. Saya berharap tidak harus mencatat informasi ini di tabel lain seperti yang ditunjukkan pada solusi d7.
Saya dapat menambahkan bidang ke formulir tautan dalam modul khusus yang saya buat, hanya untuk tujuan pengujian, saya hanya menambahkan bidang teks untuk memulai dengan:
custom_menu.module:
function custom_menu_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if($form_id == 'menu_link_content_menu_link_content_form') {
$form['promoteToMainMenu'] = array(
'#type' => 'textfield',
'#title' => t('Promote to main menu'),
'#description' => t('Promote link menu to main menu.'),
'#default_value' => '',
'#weight' => -9
);
}
}
Bidang memang ditampilkan dalam bentuk tautan tetapi tidak pernah direkam.
Adakah yang bisa membantu saya dengan ini?
sumber
Jawaban:
Periksa modul Menu Item Extras .
sumber
Anda bisa menggunakan
hook_entity_base_field_info
untuk menambahkan bidang tambahan kemenu_link_content
entitas dengan kode berikut:Lihat https://www.drupal.org/docs/8/api/entity-api/defining-and-using-content-entity-field-field-definitions untuk rincian lebih lanjut tentang
BaseFieldDefinition
.Setelah itu, Anda harus
hook_form_menu_link_content_menu_link_content_form_alter()
menambahkan bidang ke formulir.sumber
BaseFieldDefinition->setDisplayOptions()
metode:...->setDisplayOptions('form', [ ... ])
.Sayangnya memang tidak ada UI bidang untuk tautan menu secara default di Drupal 8 seperti yang dikatakan @MatthieuScarset. Tetapi
menu_link_content
merupakan entitas konten dalam Drupal 8, sehingga dimungkinkan untuk menambahkan bidang ke dalamnya.Opsi # 1 Tentu saja Anda dapat melakukannya secara terprogram seperti yang disarankan @Decipher.
Opsi # 2 Tetapi ada solusi lain untuk mengaktifkan UI bidang untuk tautan menu sementara:
Drupal\menu_link_content\Entity\MenuLinkContent
field_ui_base_route = "entity.menu.add_link_form"
ke anotasi/admin/structure/menu/manage/main/add/fields
drush cex -y
).field_ui_base_route = "entity.menu.add_link_form"
dari anotasi diDrupal\menu_link_content\Entity\MenuLinkContent
sumber
Anda bisa menggunakan Menu Kolosal untuk menambahkan bidang alih-alih modul Menu inti.
sumber
"Ekstra item menu" adalah salah satu cara untuk mencapai ini, seperti yang disarankan @Mykhailo Gurei.
Tetapi dalam kasus saya, saya harus menambahkan bidang tambahan dan menggunakan modul menu Mega. Saya menggunakan "We mega menu" dan dengannya "Ekstra item menu" tidak berfungsi. Menu sederhana tidak ditampilkan di front-end (beberapa template menimpa masalah).
Jadi opsi lain yang berfungsi dengan "We mega menu" adalah "Bidang konten item menu":
https://www.drupal.org/project/menu_item_fields
Memiliki fungsi yang sama dan tidak memiliki konflik dengan modul menu mega Kami.
sumber
Sayangnya, pengembang inti Drupal 8 belum membuat tautan Menu yang dapat dilepas. Jadi tidak mungkin untuk menambahkan bidang ke tautan menu untuk saat ini.
Pembuat situs "bekerja di sekitar" adalah untuk membuat kosakata khusus yang dapat memiliki bidang khusus.
sumber