Frage

Ich brauche einen Deeplink zu einem bestimmten Kommentar zu bauen und zu drucken. Damit der Anwender kann direkt den Kommentar verfasst Zugriff mit nur einen Link klicken. Ich konnte nicht eine native Drupal Funktion finden, dies zu bekommen, so dass ich es meine eigenen bauen.

Meine Lösung

<?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);
?>

Sie den Link zum Drucken Sie nur auf Anruf <?php print $commentlink;?> haben. Aber ich bin mir ziemlich sicher, dass es besser ist, und vieles mehr Drupal wie Weg, um das Problem zu lösen.

Der bessere Weg

Mikeker es tat :) Als er vorschlug, hier ist die Lösung.

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

Beachten Sie den kleinen Unterschied bettween Mikeker und meine Version. array("fragment" => "comment-$comment->cid")); und array("query" => "comment-$comment->cid"));

Die Abfrage param wird eine ? auf die URL hinzuzufügen. Also Ihr Weg sieht aus wie

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

Im Gegensatz zu meiner Lösung (Fragmente):

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

Hinweis: Beinhaltet nicht die führenden Zeichen ‚#‘ an eine Fragment-Kennung. Es wird von Drupal hinzugefügt werden.

War es hilfreich?

Lösung

Das ist im Grunde die Art und Weise, es zu tun. Kommentar Permalinks sind in Form von:

node/<nid>#comment-<cid>

Wo <nid> und <cid> die Knoten und Kommentar-IDs sind. Sie können sich einen Schritt sparen, indem nicht Aufruf drupal_lookup_path() tun - l() oder url() es für Sie tun. Die verkürzte Routine würde wie folgt aussehen:

$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
);

Andere Tipps

Falls jemand fragt sich, die Drupal 7 Weg (zumindest scheint zu sein) so aus:

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

Zum Beispiel:

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

Und dies würde in vielleicht eine comment.tpl.php Datei platziert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top