每当创建 Joomla 文章或类别时,系统都会记录创建它的帐户。这对于我们还希望显示指向撰写文章的用户的链接的内容项,或显示由特定 Joomla 用户创作的内容非常有用。警告消息“JUser: :_load: Unable to load user with ID: XX”告诉我们无法加载具有 XX ID 号的用户,通常是因为该用户已被删除。
请注意,此消息是警告而不是错误,因此虽然它可能很烦人并且可能会显示通知或警告,但它不会破坏您的网站。将来,当用户离开您的组织时,最好禁用他们的 Joomla 帐户,而不是删除它。这样可以防止此问题再次出现。
选项 1:添加“创建者”用户
在文章或类别编辑屏幕上,有一个 发布 选项卡。其中有一个选项可以设置或更改与该项目关联的用户。如果原始创建者用户帐户已被删除,则此选项未设置,如果将其重置为现有用户帐户,警告将消失。如果你有很多文章或分类带有此警告,打开每个文章或分类并将它们重新分配给现有用户可能会很乏味。幸运的是,我们还有另一种选择可以避免这种情况。
选项 2:更改现有用户的用户 ID
如果你有数百篇文章和分类,这些文章和分类最初是由某个用户创作的,但后来被删除了,那么打开每篇文章和分类并将其重新分配给现有用户将是一个巨大的负担。如果只有一个用户,或者大多数项目都是由一个用户创建的,我们可以编辑该用户 ID 以匹配警告中显示的用户 ID。然后软件将找到具有正确 ID 的关联用户。但是,如果我们在想要更改的用户之后创建了文章和类别,那么所有这些都会抛出相同的警告。最安全的解决方法是创建一个新用户,然后将该 ID 更改为警告中的 ID。
记得在 Joomla 中做任何重大更改之前要运行备份,尤其是当你直接编辑数据库时。
要更改用户 ID,您可以使用以下 MySQL 查询:
UPDATE `databasename`.`#_users` SET `id` = 'xx' WHERE `#_users`.`id` = 'yy';
其中 'databasename' 是您的数据库名称,#_ 替换为您的数据库前缀,xx 是您在警告消息中看到的用户 ID,yy 是您刚刚创建的新用户的 ID。如果您使用的是 phpMyAdmin,您可以单击编辑用户 ID 并通过键入来更改它,如下面的屏幕截图所示。
如果 yy 用户 ID 已存在于此表中,则您可能还需要更新 #_user_usergroup_map 表,将用户映射到正确用户组的同一记录的 xx 用户 ID 替换为新用户 yy 的此用户 ID。
选项 3:将所有文章和类别分配给现有用户的用户 ID
如果您习惯直接在数据库上运行 MySQL 查询,而不是将现有用户的用户 ID 更改为已删除的用户 ID(选项 2),我们可以将数据库中所有文章和类别的“创建者”字段更新为仍然存在的用户 ID。您可以在 User management (用户管理) 屏幕的 Users > Manage (用户管理) 列中的 ID 列中查看现有用户的用户 ID。
要更新文章的 created by 字段,请使用以下 MySQL 查询:
UPDATE `databasename`.`#_content` SET `created_by` = 'xx';
要更新类别的 created by 字段,请使用以下 MySQL 查询:
UPDATE `databasename`.`#_categories` SET `created_user_id` = 'xx';
无论您选择哪种解决方案,当您完成该过程后,警告消息都将消失,因为所有内容项现在都分配了用户。不再有烦人的警告消息!