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)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top