看起来可以使用 Url::fromUserInput()
看看下面的链接:https ://api.drupal.org/api/drupal/core!lib!Drupal!Core!Url.php/function/Url%3A%3AfromUserInput/8.1.x
你的代码看起来像这样
$url = Url::fromUserInput('#' . $node->getTitle());
把它放在哪里取决于你如何创建你的页面。如果它是标准视图(我假设),则必须挂钩到链接的创建并更改 URL。
对于上述情况,您需要创建一个模块并将钩子添加到您的 .module 文件中。
你需要的钩子是 hook_link_alter(),你可以在这里找到文档:https ://api.drupal.org/api/drupal/core!lib!Drupal!Core!Menu!menu.api.php/函数/hook_link_alter/8.1.x
/**
* Implements hook_link_alter().
*/
function module_link_alter(&$variables) {
/** @var NodeInterface $node */
$node = $variables['options']['node'];
if ($node != NULL){
$variables['url'] = Url::fromUserInput('#' . $node->getTitle());
}
上面的代码应该能让你上路,我不完全确定它是否会工作,因为我还没有尝试过。
希望这可以帮助!