Drupal:コメントするためにディープリンクを取得する方法は?
-
03-10-2019 - |
質問
任意のコメントにディープリンクを構築して印刷する必要があります。ユーザーがリンクをクリックするだけで特定のコメントに直接アクセスできるようにします。私はこれを手に入れるためにネイティブの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;?>
. 。しかし、私は問題を解決するためのより良い、より多くのDrupalのような方法があると確信しています。
より良い方法
マイクカーはそれをしました:)彼がここに示唆したように、ここに解決策があります。
<?php
$commentlink = l(
$date,
"node/$comment->nid",
array("fragment" => "comment-$comment->cid"));
?>
Mikekerと私のバージョンの間の小さな違いに注意してください。 array("fragment" => "comment-$comment->cid"));
と array("query" => "comment-$comment->cid"));
クエリパラマはAnを追加します ?
URLに。だからあなたの道はどのように見えますか
//…query
http://example.com/path/to/node?comment-2
私の溶液(フラグメント)とは反対です:
//…fragment
http://example.com/path/to/node#comment-2
ノート:フラグメント識別子に先頭の「#」文字を含めないでください。 Drupalによって追加されます。
解決
それは基本的にそれを行う方法です。コメントパーマリンクは次の形式です。
node/<nid>#comment-<cid>
どこ <nid>
と <cid>
それぞれノードとコメントIDです。あなたは電話をかけないことによって自分自身を節約することができます 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
);
他のヒント
誰かが疑問に思っていた場合、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>";
そして、これはおそらく、コメント.tpl.phpファイルに配置されます。