2011-10-07 5 views
2

Я пытаюсь перенаправить админов сайта из контента при обновлении, так как он никогда не будет непосредственно просматриваться. Вместо этого я пытаюсь связать их с определенным разделом домашней страницы, однако, когда происходит перенаправление, опция фрагмента игнорируется.Использование фрагмента в Drupal 7 Переадресация формы

function _content_redirect_to(&$form_state, $hash) { 
    $destination = drupal_get_destination(); 
    if ($destination['destination'] != 'admin/content') { 
     $form_state['redirect'] = array(
      '<front>', 
      array(
       'query' => array(), 
       'fragment' => 'whatever', 
       'absolute' => TRUE, 
      ), 
     ); 
    } 
} 

function _content_redirect_location($form, &$form_state) { 
    _content_redirect_to($form_state, 'locations'); 
} 

function content_redirect_form_alter(&$form, &$form_state, $form_id) { 
    $link = l('test link', '<front>', array(
     'fragment' => 'locations' 
    )); 
    drupal_set_message($link); // Works just fine. 
    switch ($form_id) { 
     case 'location_node_form': 
      $form['actions']['submit']['#submit'][] = '_content_redirect_location'; 
      break; 
    } 
} 

То же самое происходит, когда я вызываю drupal_goto непосредственно при обновлении.

function content_redirect_node_update($node) { 
    if ($node->type == 'location') { 
     drupal_goto(
      '<front>', array(
       'fragment' => 'locations' 
      ) 
     ); 
    } 
} 

Я не смог найти информацию об этом еще где.

ответ

0

Я знаю, что это не идеальное решение, но попробуйте это:

$form['#action'] = url($_GET['q'], array('query' => array('destination' => 'DESIRED_LOCATION'))); 
0

Правильный способ сделать это:

$form_state['redirect'] = array('<front>', array('fragment' => 'location')); 
Смежные вопросы