如何在注册期间在drupal中生成特定模式的用户名

How to generate username of specific pattern in drupal during registration

我想生成 usernames st + 前两个 他们 first name 的首字母 + 他们的 last name.

创建特定模式 username 的模块很少,但其中 none 可以满足我的要求。我不是 Drupal 模块专家。

你可以做的是安装automatic username模块:

导航到该模块的配置页面:admin/config/people/accounts/patterns

然后,在 "Other settings" 部分中,您可以选中选项 "Evaluate PHP in pattern."

这允许您在 "Pattern for username" 字段中执行 PHP。需要考虑两件事:

  1. PHP 在令牌替换后执行,这允许您实际操作字符串。
  2. 您需要echo最终结果。

确保 php 包含在 <?php ?> 标签中。此外,如果您犯了语法错误,它只会在注册时出现(或者在执行脚本时。)

现在假设您将用户配置为具有 first_name 字段和 last_name 字段(具有这些特定字段名称)

您的 PHP 可能看起来像这样:

<?php 
  $initials = substr("[user:field-first-name]", 0, 2);
  echo 'str' . $initials . "[user:field-last-name]";
?>

首先,请注意令牌在双引号之间,以确保令牌输出的内容被 PHP

视为字符串

其次,php函数substr用于获取名字的2个首字母。

现在,我不知道的事情

  • 我不知道如果两个用户碰巧拥有相同的结果用户名会发生什么
  • 我不知道如果用户在他的名字中输入双引号会发生什么,可能很危险,你可能想用 str_replace 或类似的东西来逃避它