首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试/kint简单XML站点地图链接数组?

如何调试/kint简单XML站点地图链接数组?
EN

Drupal用户
提问于 2020-09-25 03:39:39
回答 1查看 231关注 0票数 1

我试图从简单的XML站点地图中找到如何调试/kint变量/数组?

我在这里浏览了文档:https://www.drupal.org/docs/8/modules/simple-xml-sitemap/api-and-extending-the-module#s-api-hooks,以找到我需要的钩子。

我的目标是取消所有要删除已发布但未包含内容类型的非别名节点的链接。

数组键['path']看起来是无别名的URL,下面的代码删除除主页之外的所有链接。我不确定如何在这个函数中使用kint($link),所以我可以看到还有哪些其他数组键可以用于比较。

代码语言:javascript
复制
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()这些站点地图数组吗?或者是一些文档来显示这些数组的结构?

EN

回答 1

Drupal用户

回答已采纳

发布于 2020-09-25 13:37:36

正如克莱夫所说,您需要确保devel和kint模块都已启用。(注意: D8's开发4.0现在包括kint模块,但需要“composer requires -php/kint”才能使其工作)然后您可以添加钩子并只执行ksm($links);语句。

确保清除缓存,以便找到钩子。然后在gui中重新生成站点地图(S),生成kint输出,您可以检查结构。

另外,也不能完全确定,但是我认为这个钩子必须在一个模块中,并且不能在.theme文件中工作。

FYI --这是工作钩子中的一个代码片段,可以实现您想要的功能,包括删除未翻译的节点。

代码语言:javascript
复制
/**
 * 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;
    }
}
票数 3
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/296965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档