我创建了一个 Drupal 7 自定义登录页面并使用 user-login.tpl.php 模板文件更改了布局。一切都很顺利,直到我意识到大多数强制登录都重定向到 /user 而不是 /user/login 对于匿名用户。我不想修改 user.tpl.php 模板,因为这显然会改变我的个人资料页面的布局。
我搜索了一下,找到了一些 template.php 文件的代码,以检查用户是否已登录,如果没有则重定向到 user-login.tpl.php 文件。
<?php
function mytheme_preprocess_page(&$vars) {
// Check to see that the user is not logged in and that we're on the correct page.
if ($vars['user']->uid == 0 && arg(0) == 'user' && (arg(1) == '' || arg(1) == 'login')) {
// Add a custom template-file.
array_unshift($vars['template_files'], 'page-login');
// Add body classes for easier css.
$vars['body_classes'] .= ' logged';
}
}
?>
显然去掉了 php 标签并将 Mytheme 更改为我的主题名称,它似乎仍然不起作用。我还删除了添加的身体类,但没有去。我认为这是添加的正文类的错误。
Warning: array_unshift() expects parameter 1 to be array, null given in framework_preprocess_page() (line 123 of /Applications/MAMP/htdocs/mysite/sites/all/themes/framework/template.php).
Notice: Undefined index: body_classes in framework_preprocess_page() (line 125 of /Applications/MAMP/htdocs/mysite/sites/all/themes/framework/template.php).
如果被移除
Warning: array_unshift() expects parameter 1 to be array, null given in framework_preprocess_page() (line 123 of /Applications/MAMP/htdocs/mysite/sites/all/themes/framework/template.php).
我也尝试了一个基本的重定向
<?php
function YOURTHEME_preprocess_page(&$vars) {
// Check to see that the user is not logged in and that we're on the correct page.
if ($vars['user']->uid == 0 && arg(0) == 'user' && (arg(1) == '' || arg(1) == 'login')) {
drupal_goto("user/login");
}
}
?>
但该功能会挂起页面
页面未正确重定向
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
此问题有时可能是由禁用或拒绝接受 cookie 引起的。
切换另一个页面的“用户/登录”路径有效,而不是 /login 路径。
有任何想法吗?我是一个 php 新手,所以简单的代码/解释是最好的。