我有一个场景,我需要对未找到的 url 执行一些重定向
http://localhost/drupal9/node/1/search
通过我正在使用的插件添加了单词搜索,它是前端路由而不是后端,因此在刷新此 url 时,我得到Not Found,这完全有道理我需要做的是从 URL 中删除单词 search 并重定向到,
http://localhost/drupal9/node/1/
由于搜索是一个常用词,可以在其他内容类型中使用,我首先需要检查 URL 是否属于我的自定义内容类型。让我向您展示我已经拥有的一个实现。
function [module]_preprocess_page(&$variables) {
$query = \Drupal::entityQuery('node')
->condition('type', [module]);
$nids = $query->execute();
if(array_search(2,$nids)){
echo "yes";
}
}
所以在这里我正在做的是用我的内容类型抓取所有节点,并从 URI 中抓取 Nid 并匹配它们,这确实有效,但还有另一个问题。在页面属性中,我们有一个ALias选项,所以如果用户使用自定义别名,那么我不再在 URI 中获得Nid,所以这个逻辑会中断,
这个问题可能看起来有点棘手,但要求很简单。我正在寻找一个统一的解决方案来将 URL 解析为一些 drupal API 并简单地获取内容类型名称。Url 可能包含自定义别名或 Nid