Как я могу изменить URL ссылки "Добавить новый комментарий" в тизере?


В настоящее время у меня есть список тизеров, и у них есть количество комментариев и ссылка "Добавить новый комментарий".

Эта ссылка ведет на специальную страницу комментариев с URL-адресом формы "/комментарий/ответ/19#форма комментариев".

Однако я хочу, чтобы он переходил к фактическому узлу, у которого внизу есть форма комментария (например, "/node/19#форма комментария").

Возможно, это можно сделать, если template.php или каким-то другим способом. Любые идеи будут высоко оценены.

Author: Podsnap, 2015-01-26

1 answers

Перейдите на страницу администратора для вашего типа контента

/администратор/структура/типы/управление/страница

И проверьте Show reply form on the same page as comments в разделе Comment settings.

Если вы посмотрите на comment_node_view() в модуле комментариев, вы увидите, где ссылка на комментарий добавляется в тизеры.

    if (user_access('post comments')) {
      $links['comment-add'] = array(
        'title' => t('Add new comment'),
        'href' => "comment/reply/$node->nid",
        'attributes' => array('title' => t('Add a new comment to this page.')),
        'fragment' => 'comment-form',
      );
    }

Чтобы изменить ссылку, вы можете использовать hook_node_view_alter() в своем модуле.

function MODULE_node_view_alter(&$build) {
  $node = $build['#node'];
  if (isset($build['links']['comment']['#links']['comment-add'])) {
    // Alter the 'Add new comment' link.
    $build['links']['comment']['#links']['comment-add']['href'] = "node/$node->nid";
    // Fragment is the '#comment-form' part of the url.
    $build['links']['comment']['#links']['comment-add']['fragment'] = 'comment-form';
  }
}
 1
Author: Marcus Aschan, 2015-01-29 13:17:55