Drupal: Как получить диплинк на комментарий? - PullRequest
1 голос
/ 17 сентября 2010

Мне нужно создать и напечатать глубокую ссылку на любой комментарий.Так что пользователь может получить прямой доступ к конкретному комментарию, просто нажав на ссылку.Я не смог найти нативную функцию drupal, чтобы получить это, поэтому я создаю ее самостоятельно.

Мое решение

<?php
    global $base_url;
    $base = drupal_lookup_path('alias',"node/".$node->nid);
    $path = $base_url.'/'.$base.'#comment-'.$comment->cid;

    $link_options = array('html'=> $html);
    $commentlink = l($date, $path, $link_options);
?>

Чтобы напечатать ссылку, вам нужно всего лишь позвонить <?php print $commentlink;?>.Но я уверен, что есть лучший и более дружественный способ решения проблемы.

Лучший путь

Майкер сделал это :) Как он предложил, вот решение.

<?php
 $commentlink = l(
    $date,
    "node/$comment->nid",
    array("fragment" => "comment-$comment->cid"));
?>

Обратите внимание на небольшую разницу между Mikeker и моей версией.array("fragment" => "comment-$comment->cid")); и array("query" => "comment-$comment->cid"));

Параметр запроса добавит ? к URL-адресу.Таким образом, ваш путь выглядит как

//…query
http://example.com/path/to/node?comment-2

В противоположность моему решению (фрагмент):

//…fragment
http://example.com/path/to/node#comment-2

Примечание: Не включайте ведущий символ '#' видентификатор фрагмента.Он будет добавлен drupal.

Ответы [ 2 ]

0 голосов
/ 03 марта 2013

В случае, если кому-то интересно, способ Drupal 7 (по крайней мере, кажется) выглядит так:

<a href='http://YOURSITE.com/comment/CID#comment-CID'>link text</a>

Например:

print "<a href='/comment/$comment->cid#comment-$comment->cid'>text here</a>";

И это будет помещено в, возможно, файл comment.tpl.php.

0 голосов
/ 18 сентября 2010

Это в основном способ сделать это. Постоянные ссылки на комментарии имеют вид:

node/<nid>#comment-<cid>

Где <nid> и <cid> - идентификаторы узла и комментария соответственно. Вы можете сэкономить себе шаг, не звоня drupal_lookup_path() - l() или url(), сделав это за вас. Сокращенная процедура будет выглядеть так:

$commentlink = l(
  $date,                                      // Text of the link
  "node/$node->nid",                          // path to node, l() handles aliases
  array('query' => "comment/$comment->cid"),  // fragment to specific comment
);
...