Sejauh ini, saya menemukan 3 fungsi ini di Drupal 7, tetapi saya tidak begitu yakin apa perbedaan di antara mereka, dan mana yang lebih tepat untuk mendapatkan ID node dalam fungsi blok preproses.
Bisakah Anda memberi saya wawasan?
Sejauh ini, saya menemukan 3 fungsi ini di Drupal 7, tetapi saya tidak begitu yakin apa perbedaan di antara mereka, dan mana yang lebih tepat untuk mendapatkan ID node dalam fungsi blok preproses.
Bisakah Anda memberi saya wawasan?
Jawaban:
menu_get_object()
akan mengembalikan objek node untuk node yang ID-nya adalah 1; jika halaman yang ditampilkan adalah example.com/user/1, makamenu_get_object('user')
akan mengembalikan objek pengguna untuk pengguna yang ID-nya adalah 1.node_load
) untuk dipanggil untuk memuat objek yang sesuai dengan bagian dari jalur saat inidrupal_lookup_path("homepage")
akan kembali"node/1"
. Alias path dapat dikaitkan dengan jalur internal apa pun, tidak hanya untuk jalur simpul.Jika semua yang Anda ingin dapatkan adalah ID node dari node yang saat ini ditampilkan, maka Anda hanya perlu menggunakan kode berikut:
Jika Anda perlu mendapatkan objek node, maka Anda dapat menggunakan kode berikut:
Dari potongan itu, yang kedua lebih baik, karena mengembalikan objek simpul yang benar untuk jalur internal seperti simpul / 1 / revisi / 3 / tampilan.
Ingatlah bahwa beberapa fungsi preproses, seperti yang untuk halaman, atau node, sudah memiliki a
$variables['node']
. Ini berarti bahwa dalam kasus tersebut, Anda hanya perlu menggunakan cuplikan berikut dalam fungsi preproses Anda, tanpa khawatir tentang fungsi mana yang akan digunakan.Untuk fungsi preproses lainnya, periksa dokumentasi untuk melihat apakah ada variabel yang mengandung objek node. Sebagai contoh, itulah
template_preprocess_comment()
yang menyediakan$variables['node']
fungsi preproses untuk komentar.sumber
Cara melakukannya di template_preprocess_page Drupal Core :
Baris 2267 dari theme.inc dan selanjutnya:
template_preprocess_page menggunakan menu_get_object . Setelah itu hanya masalah memeriksa apakah node didefinisikan dan mendapatkan $ node-> nid.
sumber
Satu hal yang harus Anda perhatikan adalah path alias.
drupal_get_normal_path($path)
untuk mendapatkan jalur saat ini gunakan variabel sistem
$_SERVER["REQUEST_URI"]
(Jika Anda berada di halaman simpul yang dapat Anda panggil
$node->uri['path']
, ini akan mengembalikan jalur non-alias. Kemudian lagi jika Anda berada di halaman simpul, Anda bisa menggunakan$node->nid
.)ini akan mengembalikan simpul / XXXX
jadi coba sesuatu seperti
sumber
Bukan cara yang buruk untuk melakukannya. arg () bekerja di jalur internal, sehingga tidak akan terpengaruh oleh alias path.
sumber
menu_get_object
(yang hanya membungkusmenu_get_item
sehingga sama-sama bagus).if (arg(0) == 'node' && is_numeric(arg(1)))
makaarg(1)
hampir 99% akan mengembalikan Anda ID simpul. Tapi satu-satunyaarg(1)
juga bisa mengembalikan banyak ID lainnya kepada Anda.Di Drupal 8, Anda bisa mendapatkan argumen url berdasarkan apa yang ada di perutean.
Untuk mendapatkan id sendiri:
Jika Anda berencana untuk memuat objek node, Anda bisa mendapatkannya dengan cara ini:
Untuk menemukan nama parameter, Anda dapat menggunakan:
sumber