Je dois récupérer l'URL de la page actuelle sur un site Drupal. Peu importe le type de contenu, il peut s'agir de n'importe quel type de nœud.
Je ne cherche PAS le chemin d'accès au thème, ni l'URL de base, ni la get_destination de Drupal. Je cherche une fonction ou une variable qui me donnera les informations suivantes:
http://example.com/node/number
Avec ou sans (plus probablement) le http://
.
drupal_get_destination () a un code interne qui pointe au bon endroit pour obtenir le chemin interne actuel. Pour traduire ce chemin en une URL absolue, la fonction url () devrait faire l'affaire. Si l'option 'absolute' est passée, cela générera l'URL complète, pas seulement le chemin interne. Il utilisera également tous les alias de chemin pour le chemin actuel.
$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
C'est ce que j'ai trouvé utile
global $base_root;
$base_root . request_uri();
Renvoie les chaînes de requête et c'est ce qui est utilisé dans core: page_set_cache ()
Vous pouvez aussi le faire de cette façon:
$current_url = 'http://' .$_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'];
C'est un peu plus rapide.
Essayez ce qui suit:
url($_GET['q'], array('absolute' => true));
Cette méthode est ancienne, nous pouvons l’obtenir très simplement dans Drupal 7
current_path()
et une autre fonction avec une petite différence
request_path()
Je trouve l'utilisation de jetons plutôt propre. Il est intégré au noyau de Drupal 7.
<?php print token_replace('[current-page:url]'); ?>
Ce qui suit est plus Drupal-ish :
url(current_path(), array('absolute' => true));
Pour Drupal 8 vous pouvez le faire:
$url = 'YOUR_URL';
$url = \Drupal\Core\Url::fromUserInput('/' . $url, array('absolute' => 'true'))->toString();