Bagaimana cara men-debug / kint Simple XML Sitemap link array?
Saya mencoba menemukan bagaimana saya dapat men-debug / kint variabel / array dari Peta Situs XML Sederhana?
Saya mengerjakan dokumentasi di sini: https://www.drupal.org/docs/8/modules/simple-xml-sitemap/api-and-extending-the-module#s-api-hooks untuk menemukan pengait yang saya butuhkan.
Tujuan saya adalah untuk menghapus semua link yang harus node/menghapus node yang diterbitkan, tetapi tidak memiliki alias dari jenis konten yang disertakan.
Kunci array ['path']terlihat seperti URL unaliased dan kode di bawah ini menghapus semua link kecuali halaman muka. Saya tidak yakin bagaimana saya bisa kint($link)dalam fungsi ini sehingga saya dapat melihat kunci array apa yang tersedia untuk melihat apa lagi yang dapat saya gunakan untuk perbandingan.
function HOOK_simple_sitemap_links_alter(array &$links, $sitemap_variant) { foreach ($links as $key => $link) {
if (strpos($link['meta']['path'], 'node/') !== FALSE) { unset($links[$key]);
}
}
}
Apakah ada cara untuk kint()array peta situs ini? Atau mungkin beberapa dokumentasi yang menunjukkan struktur array ini?
Jawaban
Seperti yang dikatakan Clive, Anda harus memastikan bahwa modul devel dan kint diaktifkan. (CATATAN: Devel 4.0 D8 sekarang menyertakan modul kint tetapi membutuhkan 'composer require kint-php / kint' untuk menyelesaikannya agar dapat berfungsi) Kemudian Anda dapat menambahkan hook dan hanya melakukan ksm($links);pernyataan.
Pastikan untuk menghapus cache sehingga pengait akan ditemukan. Kemudian melakukan regenerasi peta situs di gui akan menghasilkan keluaran kint yang dapat Anda periksa untuk strukturnya.
Juga, tidak sepenuhnya yakin, tetapi saya pikir pengait ini harus ada dalam modul dan tidak akan berfungsi di file .theme.
FYI - Berikut potongan kode dari hook yang berfungsi yang melakukan apa yang Anda inginkan, termasuk menghapus node yang tidak diterjemahkan.
/**
* Implements hook_simple_sitemap_links_alter().
*/
function my_module_simple_sitemap_links_alter(&$links, $variant) { foreach($links as $key => $link) {
// Filter out any node/### URLs
if ( preg_match("!(/[a-z-]*)?/node/\d?!", $link['url']) ) { unset( $links[$key] );
continue;
}
}