Мне нужно создать и напечатать глубокую ссылку на любой комментарий.Так что пользователь может получить прямой доступ к конкретному комментарию, просто нажав на ссылку.Я не смог найти нативную функцию 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.