it-swarm.com.de

Generieren einer absoluten Knoten-URL aus ihrer Knoten-ID

Ich denke, die Frage ist selbsterklärend. Ich habe eine Knoten-ID und muss irgendwie ihre absolute URL erstellen. Ich kann das tun, aber (ich denke) das funktioniert nicht überall auf der Site:

<a href="?q=node/node-id">Node Title</a>

Bitte korrigieren Sie mich, wenn ich falsch liege.

Gibt es eine Funktion, mit der ich die Knoten-ID angeben und mir den absoluten Pfad zurückgeben kann?

3
Bora Semiz

Ja, die Funktion url() :

$url = url("node/$nid");
5
Clive

Drupal 8

$nid = 5;
// Or $nid = $node->id();
$node_title = 'Node Title'
// Or $node->getTitle();

Absolute URL erstellen:

// Will output http://example.com/path-to-my-node
$options = ['absolute' => TRUE];
$url_object = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => $nid], $options);
// In Twig use {{ url_object }}.
// In PHP (outside a render array) use $url_object->toString().

Absolutes Linkobjekt (und innere Spanne) erstellen:

// Will output <a href="http://example.com/path-to-my-node" class="this-class"><span>Node Title</span></a>
$options = ['absolute' => TRUE, 'attributes' => ['class' => 'this-class']];
$node_title = \Drupal\Core\Render\Markup::create('<span>' . $node_title . '</span>');
$link_object = \Drupal\Core\Link::createFromRoute($node_title, 'entity.node.canonical', ['node' => $nid], $options);
// In Twig use {{ link_object }}.
// In PHP (outside a render array) use $link_object->toString().
7
leymannx

In Drupal 8 können Sie die Funktion toLink verwenden, wenn Sie den Knoten bereits laden, um einen absoluten Link zu generieren.

$event = \Drupal::entityTypeManager()->getStorage('node')->load($event_id);
if (!$event)
  return false;

// add ->toString() or other if needed
$abs_link = $event->toLink(NULL, 'canonical', ['absolute' => true]);

Zum Beispiel.

Diese Lösung verwendet das gleiche Prinzip wie frühere Antworten, erscheint mir jedoch praktischer, wenn Sie andere Informationen von diesem Knoten benötigen oder wenn der Knoten bereits geladen ist.

4
Pauleau

Drupal 7

Sie können den Pfadalias mit drupal_get_path_alias () abrufen

es wird zurückkehren:

Ein Alias-Pfad, wenn einer gefunden wurde, oder der ursprüngliche Pfad, wenn kein Alias ​​gefunden wurde.

Diese Funktion gibt Ihnen einen hübschen Pfad, wenn sie vom Administrator oder vom Modul pathauto erstellt wird. Danach können Sie den Pfadalias verwenden, um eine absolute URL zu erstellen.

Es gibt viele Möglichkeiten, dies zu tun. Sie können rl () oder l () verwenden oder sogar einen schmutzigeren Ansatz verwenden und global $base_url Verketten, um Alias ​​zu pfaden Dadurch erhalten Sie nur eine absolute URL als Zeichenfolge und können diese in einer beliebigen Vorlage ausdrucken.

mit drupal_get_path_alias:

$path_alias = drupal_get_path_alias("node/{node_id}", $language_code);

Drupal 8

In Drupal 8) gibt es keine der oben genannten Funktionen, aber Sie können dies auch mit dem Dienst path.alias Tun.

z.B.

$path_alias = \Drupal::service('path.alias_manager')->getAliasByPath($system_path, $langcode);

Mehr

Bitte überprüfen Sie dieser Link für weitere Informationen zu beiden Versionen

2
otarza

Ja, die Funktion l() :

$link = l("Node Title", $nid);
print $link;

Über dem Code wird die folgende Ausgabe gedruckt:

<a href="/node/XXX">Node Title</a>

Wenn Sie eine absolute URL erhalten möchten, wie Sie in Ihrer Frage angegeben haben:

$link = l('Node Title', $nid, array('absolute' => TRUE));

dadurch wird der Link wie folgt generiert:

<a href="http://example.com/node/XXX">Node Title</a>

2
Елин Й.