我试图从简单的XML站点地图中找到如何调试/kint变量/数组?
我在这里浏览了文档:https://www.drupal.org/docs/8/modules/simple-xml-sitemap/api-and-extending-the-module#s-api-hooks,以找到我需要的钩子。
我的目标是取消所有要删除已发布但未包含内容类型的非别名节点的链接。
数组键['path']看起来是无别名的URL,下面的代码删除除主页之外的所有链接。我不确定如何在这个函数中使用kint($link),所以我可以看到还有哪些其他数组键可以用于比较。
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]);
}
}
}有办法kint()这些站点地图数组吗?或者是一些文档来显示这些数组的结构?
发布于 2020-09-25 13:37:36
正如克莱夫所说,您需要确保devel和kint模块都已启用。(注意: D8's开发4.0现在包括kint模块,但需要“composer requires -php/kint”才能使其工作)然后您可以添加钩子并只执行ksm($links);语句。
确保清除缓存,以便找到钩子。然后在gui中重新生成站点地图(S),生成kint输出,您可以检查结构。
另外,也不能完全确定,但是我认为这个钩子必须在一个模块中,并且不能在.theme文件中工作。
FYI --这是工作钩子中的一个代码片段,可以实现您想要的功能,包括删除未翻译的节点。
/**
* 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;
}
}https://drupal.stackexchange.com/questions/296965
复制相似问题