1

任意のコメントへのディープリンクを作成して印刷する必要があります。ユーザーがリンクをクリックするだけで特定のコメントに直接アクセスできるようにします。これを取得するためのネイティブの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によって追加されます。

4

2 に答える 2

0

それが基本的にそれを行う方法です。コメントパーマリンクは次の形式です。

node/<nid>#comment-<cid>

ここ<nid>で、および<cid>はそれぞれノードIDとコメント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
);
于 2010-09-17T22:29:57.397 に答える
0

誰かが疑問に思っている場合に備えて、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ファイルに配置されます。

于 2013-03-02T23:34:37.093 に答える