Saya ingin mendapatkan semua node yang my_custom_type
bertipe dalam Drupal 8 .
Saya tahu saya bisa mendapatkan semua node (dari jenis apa pun) dengan \Drupal\node\Entity\Node::loadMultiple()
dan daftar semua jenis oleh \Drupal\node\Entity\NodeType::loadMultiple()
.
Tetapi bagaimana cara mendapatkan hanya node dari tipe node yang diberikan?
Saya benar-benar tidak ingin menggunakan modul khusus untuk itu (jika mungkin), tetap sesederhana mungkin. Saya akan menggunakan solusi dalam modul khusus saya.
Dan memuat semua node dengan \Drupal\node\Entity\Node::loadMultiple()
dan kemudian memeriksa tipenya foreach
akan memukul kinerja terlalu banyak.
$nids = $this->entityTypeManager->getStorage('node')->getQuery()->condition('type','my_custom_type')->execute();
. Lihat drupal.org/node/2849874 .Cara lain untuk melakukan ini adalah menggunakan potongan kode ini:
sumber
Biasanya Anda perlu node yang diterbitkan, tidak semua.
sumber
Ini sebenarnya sangat mudah,
Jika Anda ingin semua node juga tidak dipublikasikan, cukup gunakan:
sumber
Sesuatu yang, pada suatu waktu, cukup mudah untuk dipecahkan dan ditemukan dokumentasi untuk menjadi sedikit lebih membingungkan dan sulit ditemukan. Ini adalah salah satu hasil pencarian teratas untuk topik ini, jadi saya ingin meluangkan waktu untuk memposting solusi yang saya bisa kumpulkan menggunakan Metode baru.
Kasus penggunaan saya adalah mendapatkan daftar node yang diterbitkan dari jenis konten tertentu dan menerbitkannya ke halaman sebagai XML untuk dikonsumsi oleh pihak ketiga.
Ini deklarasi saya. Beberapa dari mereka mungkin berlebihan pada saat ini, tapi saya belum selesai memperbarui kode.
Berikut kode untuk hanya memberi makan objek ke XML
Jika Anda perlu memijat data, maka Anda harus mengisi array dan mengeditnya. Tentu saja, Anda masih bisa membuat serial array perpustakaan standar.
Semoga ini membantu.
sumber