gli URL semplificati Drupal a pagina personalizzata richiesta GET
-
27-09-2019 - |
Domanda
Ho una pagina Drupal (contenuto della pagina tipo) che dovrebbero accettare i valori GET utilizzando gli URL semplificati.
ho messo il seguente codice nel corpo della pagina utilizzando il formato di input codice php.
<?php
$uid = $_GET['uid'];
$user = user_load($uid);
print $user->name;
?>
Ora il seguente link http://www.example.com/mypath/?uid = 5 risultati in nome utente 5 di essere visualizzati. Grande.
La mia domanda è: può questo essere realizzato utilizzando gli URL semplificati in modo tale che vanno a http: // www. example.com/mypath/5 ha lo stesso risultato? (Simile a usando argomenti in vista)
Soluzione
Si può fare ciò che si chiede nel sistema di menu utilizzando hook_menu
in un modulo, ma non è possibile creare un alias in cui una parte di esso è un nome. L'intero alias è un nome, quindi non è possibile estrarre informazioni da esso. Utilizzando hook_menu
si può fare questo:
function my_module_menu() {
$items = array();
$items['path/%user'] = array(
'title' => 'Title',
'page callback' => 'callback',
'page arguments' => array(1),
'access callback' => '...',
'access arguments' => array(...),
);
return $items;
}
Poi, nel tuo funzione di callback si avrà il valore o l'argomento 1 nel percorso che corrisponde alla UID (in realtà sarà un oggetto utente caricato a causa di %user
).
Altri suggerimenti
Sì. Usa arg () invece di $ _GET
Tieni presente che arg () utilizza il $ _GET [ 'q'] per default e quindi si traduce in modo efficace un alias prima di restituire il risultato. Così, il parametro che si sta tentando di accesso può essere in un'altra posizione.
Per esempio, i myalias percorso / 5 potrebbe tradursi in tassonomia / termine / 5. In questo caso, arg (2) è 5.
Per ulteriori informazioni sulla funzione Drupal arg (), vedi http: // api .drupal.org / api / funzione / arg / 6
Se si utilizza Vista per assemblare queste pagine, che una parte può essere fatto facilmente per voi da mettere UID come argomento previsto nel URL.