Wie debugge / kint ich Simple XML Sitemap Link Array?
Ich versuche herauszufinden, wie ich eine Variable / ein Array in der Simple XML Sitemap debuggen / kint kann.
Ich habe die Dokumentation hier durchgearbeitet: https://www.drupal.org/docs/8/modules/simple-xml-sitemap/api-and-extending-the-module#s-api-hooks um den Haken zu finden, den ich brauche.
Mein Ziel ist es, alle Links node/zu deaktivieren, die veröffentlichte, aber nicht aliasisierte Knoten der enthaltenen Inhaltstypen entfernen müssen.
Der Array-Schlüssel ['path']scheint die unverfälschte URL zu sein, und der folgende Code entfernt alle Links mit Ausnahme der Startseite. Ich bin mir nicht sicher, wie ich kint($link)in dieser Funktion arbeiten kann, damit ich sehen kann, welche anderen Array-Schlüssel verfügbar sind, um zu sehen, was ich sonst noch zum Vergleich verwenden kann.
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]);
}
}
}
Gibt es einen Weg zu kint()diesen Sitemap-Arrays? Oder vielleicht eine Dokumentation, die die Struktur dieser Arrays zeigt?
Antworten
Wie Clive sagte, müssen Sie sicherstellen, dass sowohl das Entwicklungs- als auch das Kint-Modul aktiviert sind. (HINWEIS: D8s Devel 4.0 enthält jetzt das Kint-Modul, erfordert jedoch, dass "Composer Kint-PHP / Kint benötigt", damit es funktioniert.) Dann können Sie Ihren Hook hinzufügen und einfach eine ksm($links);Anweisung abgeben .
Stellen Sie sicher, dass der Cache geleert ist, damit der Hook gefunden wird. Wenn Sie dann die Sitemap (s) in der GUI neu generieren, erhalten Sie die Kint-Ausgabe, die Sie auf die Struktur untersuchen können.
Auch nicht ganz sicher, aber ich denke, dieser Hook muss sich in einem Modul befinden und funktioniert nicht in der .theme-Datei.
Zu Ihrer Information - Hier ist ein Codeausschnitt aus einem funktionierenden Hook, der das tut, was Sie wollen, einschließlich des Entfernens nicht übersetzter Knoten.
/**
* 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;
}
}