Проблема назначения перенаправления модуля drupal - PullRequest
0 голосов
/ 12 декабря 2011

Я работаю над еще одной идеей модуля. Этот модуль просто должен автоматически перенаправлять пользователя на указанный узел, как показано в следующем примере кода:

  function test_module_init(){
    drupal_goto('node/100');
  }

Код является простым примером. Но на самом деле проблема заключается в том, что код продолжает выполняться до тех пор, пока браузер не выдаст сообщение об ошибке «слишком много перенаправлений».

Я понимаю, почему это происходит. Что мне нужно, так это лучший способ разместить мой код drupal_goto, чтобы он выполнялся один раз, а не несколько раз, как в настоящий момент в hook_init.

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Разве вы не можете просто сделать что-то вроде этого:

 function test_module_init() {
    if(isset($_GET['q') && $_GET['q'] == 'node/100') {
       // skip goto statement
       return;
    }
    drupal_goto('node/100');
 }
0 голосов
/ 12 декабря 2011

Хук инициализации, который вы написали, срабатывает при каждой загрузке страницы, в том числе когда вы находитесь на node / 100.Вот почему вы получаете перенаправление.Таким образом, страница перенаправляется на себя.Вам действительно нужно только перенаправить, если вы еще не на node / 100.Вы можете найти эту информацию в $ _GET ['q'], если вам нужно.

Вам не нужен другой хук, вам просто нужно убедиться, что вы не вызываете drupal_goto, если вы уже находитесь на странице назначения.

...