Drupal. Obtenez alias de chemin de arguments url en cours sans dossier de l'installation
-
24-10-2019 - |
Question
Je voudrais récupérer l'alias en cours de chemin de page sans arguments de dossier de l'installation. J'utilise:
drupal_get_path_alias(request_uri())
Mais cette installation de retour / whatever / chemin / réelle et je veux récupérer le chemin / réel ne peu importe ce que Installation / whatever est.
Merci à l'avance:)
La solution
trouvé. Il était en fait un mélange des deux suggestions:
$current_path = drupal_get_path_alias($_GET["q"]);
Merci bien.
Mise à jour: la solution précédente ne fonctionne pas toujours
Quelqu'un a suggéré d'utiliser une autre méthode:
str_replace(base_path(), '', drupal_get_path_alias(request_uri(), 1));
Mais, est-il possible de faire la même sans utiliser le str_replace un peu cher?
Merci
Autres conseils
Le chemin du nœud que vous êtes?
http://api.drupal.org/api/function/drupal_get_path_alias/6
if ($node || (arg(0) == 'node' && arg(2) != 'edit')) {
$system_path = 'node/'.arg(1);
$current_path = drupal_get_path_alias($system_path);
}
Ce code feu sur les pages de nœud et vous dire l'alias de la page.
Pour plus d'informations, vous pouvez vider $ _GET et regardez la valeur de chaîne de requête « q ».
Peut-être que vous pouvez utiliser base_path () et str_replace comme ceci:
str_replace (base_path(), '', drupal_get_path_alias(request_uri()), 1);
Le base_path est enregistré dans la base de données.
$current_page_url = drupal_get_path_alias( implode( '/', arg() ) );
fonctionne aussi
Avez-vous essayé $_GET['q']
?
Je tends à repulper l'URL complète au lieu d'éviter les problèmes qui se posent lorsque base_path () est non seulement « /'.
$url = (($_SERVER['HTTPS'])?"https://":"http://") . $_SERVER['HTTP_HOST'] . url($_GET['q']);
ou encore plus simplement:
$url = url($_GET['q'], array('absolute'=>true));
Solution la plus rapide.
substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path()));
Pour passer en argument
$arg = explode('/', substr(drupal_get_path_alias(request_uri(), 1), strlen(base_path())));