Использование фрагмента в Drupal 7 Redirect - PullRequest
2 голосов
/ 07 октября 2011

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

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'
            )
        );
    }
}

Мне не удалось найти информацию по этому вопросу, где еще.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2017

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

$form_state['redirect'] = array('<front>', array('fragment' => 'location'));
0 голосов
/ 29 октября 2011

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

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