当用户登录时,会将他们带到他们/用户页面。此页面上通常有默认文本:X个月的成员。但没有别的。
您可以在此处管理此显示:admin / config / people / accounts / display
问题是,如何在此页面上添加更多信息并不是很明显。我更喜欢直接编辑用户配置文件模板,但似乎不再在Drupal 8上使用。
我要添加的内容类型:
我打算做一个" drupal block"并且只显示所有/用户路径,但我不认为我正确使用该页面。
请记住,无论使用什么,一个用户都无法访问其他用户个人资料。它仅用作登录用户的登录页面,因此该用户和该用户只能查看其帐户的详细信息。
更新
我看到你可以覆盖user.html.twig,但这意味着文件中没有PHP(无论如何这当然不是一个好方法)。那么如何将PHP逻辑放到该模板上呢?
答案 0 :(得分:3)
首先:您可以覆盖用户个人资料模板。在yourtheme / templates / dir中创建一个名为user - profile.html.twig的模板。在此文件中,您可以在{{ var_dump(user) }}
中找到用户实体。您可以根据需要呈现信息。
第二件事:如果您想在用户个人资料上添加额外的变量。您可以在hook_user_load()
中将这些变量附加到用户。在这个钩子中你可以编写所有逻辑,你可以从这里附加你的块。并在树枝中访问{{ user.your_variable }}
。
由于我们无法在twig中编写php代码,因此我们需要将所有内容从钩子,module_functions,controller到twig附加到thing。这是非常好的做法。
答案 1 :(得分:0)
我已通过@Monal Sof采纳了上述建议,但它在我的情况下不起作用,我还复制了user.html.twig
MYTHEME/templates/user/user.html.twig
文件(来自用户模块)以定义我的自定义代码,但它显示在所有节点页面上。
所以我在MYTHEME.theme
文件中使用hook_theme_suggestions_HOOK_alter()来定义用户个人资料的自定义模板。
以下是我遵循的步骤:
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function MYTHEME_theme_suggestions_user_alter(array &$suggestions, array $variables) {
$request = \Drupal::routeMatch()->getRouteObject();
$path_args = explode('/', $request->getPath());
if (\Drupal::currentUser()->isAuthenticated() && in_array('user', $path_args)) {
$suggestions[] = 'user__profile';
}
}
在此之后,我将自定义模板放在MYTHEME/templates/user/user--profile.html.twig
下并清除缓存。
答案 2 :(得分:0)
有一个模块可以帮助提供此模板建议和更多其他模块:https://www.drupal.org/project/twigsuggest