Saya sudah meneliti thread lama ini di drupal.org dan itu hanya semacam membuat kepala saya berputar. Menarik ke bawah jalan dan mencoba untuk mengurai NID dari dalamnya? Harus ada cara yang lebih baik.
Dan solusi seperti
global $node;
$nid = $node->nid;
tidak berfungsi di modul khusus saya (meskipun saya diberitahu mereka berfungsi di templat?). Tidak ada kesalahan atau apa pun, itu hanya instantiates $node
dengan NULL
nilai.
Rasanya seperti pasti ada sesuatu yang sangat jelas bahwa saya hilang.
Jadi, bagaimana Anda mendapatkan NID dari node saat ini tanpa template, sambil mengikuti praktik terbaik dan membangun modul yang cukup kuat?
node/1
,node/2
dll. Jika Anda masih mengalami masalah, mungkin ada baiknya memposting pertanyaan lain dengan kode persis yang Anda gunakan, dan memberikan sedikit konteks. Maka kita mungkin bisa menentukan di mana masalahnya terjadi$nid = ($node = menu_get_object()) ? $node->nid : NULL;
menu_get_object()
(atau bahkannode_load()
) baru saja mendapatkannya dari cache statis. Bahkan jika Anda menyebutnya sejak awal, itu masih akan dimuat oleh modul inti nanti di halaman build (karena ini adalah halaman node), dalam hal ini Anda hanya akan menghangatkan cache statis untuk proses selanjutnyaCara termudah untuk melakukan ini di Drupal 8 sejak arg () tidak lagi berfungsi:
Ubah catatan
sumber
arg(0)
mengembalikan 'simpul' danarg(1)
mengembalikan simpul nid.sumber
Tautan ini membantu saya: http://www.webomelette.com/node-id-nid-url-path-alias - Buka Konten dan filter downt untuk menemukan konten yang Anda inginkan untuk melihat Node ID dan arahkan ke Edit. link. Lihat ke bawah untuk melihat hyperlink yang memberitahu browser Anda bahwa itu akan mengikuti jika Anda mengklik Edit.
sumber
Metode kedua dalam jawaban yang saat ini diterima adalah yang terbersih di D7. Jawaban pertama:
hanya lebih bersih secara visual. Bahkan,
menu_get_object()
memanggil kode cukup banyak dan dapat menyebabkan kesalahan yang tidak terduga. Saya menggunakannya di dalamhook_node_grants()
fungsi dan mengalami kesalahan PHP Fatal:Penjelasannya, ditemukan di /drupal//a/69232/9158
Ini dipecahkan dengan menggunakan metode kedua:
sumber
Di D8:
sumber
Opsi lain, di D7:
Jika Anda berencana untuk menggunakan fungsi di luar modul Anda, jangan gunakan awalan _ pada awal nama fungsi.
sumber
sumber