Самый простой способ, о котором я могу думать, это создать такую функцию.
function modulename_redirect_when_unpublished(){
//Check if user is in rigth place (viewing nodes).
if(arg(0) == 'node' && arg(1)){
//Load this node.
$node = node_load(arg(1));
//Check if node status is different than published, and if user is not logged.
if($node->status != 1 && !user_is_logged_in()){
//Prepare destination to come back.
$destination = arg(0) . '/' . arg(1);
//Go to login page with destination saved.
drupal_goto('user/login', array('query' => array('destination' => $destination )));
}
}
}
Вы можете передать любой путь в параметре "destination" в GET, и после входа он перенаправит вас туда.
Единственный вопрос - куда поставить эту функцию. В целях тестирования я назвал его в одном из моих пользовательских модулей hook_init
, но вы можете поместить его в другое место, просто убедитесь, что он будет вызываться на 'node/%'
страницах - вы упомянули что-то об использовании правил, это можно сделать таким образомно я думаю, что слишком сложно создать собственное правило только для одного случая, чтобы запустить эту конкретную функцию, поэтому я предлагаю вам поместить этот код в hook_init
, как я сделал.
Я тестировал его на Drupal 7.57.