Domanda

Per aggiungere javascript, è possibile utilizzare:

drupal_add_js

E simile per i CSS:

drupal_add_css

Ma cosa succede se voglio solo aggiungere html alla fine della mia pagina. Cioè Aggiungere un div con un testo in essa alla fine della pagina?

È stato utile?

Soluzione

Un sacco di suggerimenti qui funziona se si desidera che l'alterazione sia tematico, ma se si desidera che questo provenga da un modulo, utilizzando una regione blocco, modello di pagina o la pagina prepocess non è tagliato, perché si sta legando l'alterazione al tema.

Dal punto di vista modulare, le seguenti opzioni sono i migliori:

hook_footer () - http: // api. drupal.org/api/function/hook_footer/6 :: my_module_footer () dovrebbe restituire una stringa di codice HTML, che può essere anche javascript. Per esempio.

function my_module_footer(){

    return "<script type='text/javascript'>//your script</script>"

}

È possibile utilizzare Drupal $ _GET [ 'q'] per ottenere l'URL della pagina e che hanno ritorno sia condizionale per l'URL della pagina.

In caso contrario, a volte uso $ GLOBALS [ "_ add_my_footer"] come un valore booleano, e impostarlo in vari punti nel modulo, poi in hook_footer (), vedere se è vero.


drupal_add_js - api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: È possibile utilizzare questo per aggiungere javascript al piè di pagina impostando il $ parametro portata a "piè di pagina" - ad esempio,

function my_module_init(){

    $script = "your script "; // notice no <script> tags
    drupal_add_js($script, 'inline', 'footer');
    // you can also use this function to grab a .js file

}

Si noti che ho messo in drupal_add_js hook_init () -. L'ho fatto, perché se non lo fai, lo script potrebbe perdersi quando si utilizza funzionalità di caching aggressivo di Drupal

Purtroppo, non esiste un parametro $ possibilità di drupal_add_css

Altri suggerimenti

Come hook_footer non sopravvisse Drupal 6, ecco la funzione equivalente e come implementarlo in Drupal 7:

/**
* Implements hook_page_alter().
*/
function example_page_alter(&$page) {
  if (variable_get('dev_query', 0)) {
    $page['page_bottom']['devel']= array(
      '#type' => 'markup',
      '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
    );
  }
}

( http://preprocess.me/drupal-hookfooter-in-drupal- 7 )

È possibile aggiungere il seguente al file di template.php del vostro tema:

  
function phptemplate_preprocess_page(&$vars) {
  $vars['closure'] .= 'Add markup here';
}
  

Drupal ha un gancio è possibile implementare e aggiungere in qualsiasi codice vuoi al piè di pagina della pagina - hook_footer. Vedere http://api.drupal.org/api/function/hook_footer/6

Si potrebbe scrivere un blocco di farlo e mettere il blocco nella chiusura.

... o, probabilmente non come raccomandato come le altre risposte, ma più diretto, è possibile aggiungere il codice HTML direttamente al file di page.tpl.php.

Ci sono già Beed fatto alcuni buoni suggerimenti:

  • Utilizzo di un blocco
  • Modelli Modifica
  • Utilizzando la funzione di pre-elaborazione.

La cosa più semplice sarebbe quella di aggiungere un blocco che si crea, dove si può mettere il vostro codice personalizzato. Si potrebbe anche creare un modello speciale per esso, in modo da non ottenere il solito blocco di Drupal markup, ma solo ciò che si scrive nel contenuto blocco.

Questo dovrebbe coprire le esigenze:

  • Hai il controllo al 100% su dove si genera il markup (È possibile definire la regione nel loro)
  • Hai il controllo al 100% su ciò che è generato markup

Ora, se non si desidera utilizzare i blocchi, perché non si vuole gli amministratori del sito per conoscere il blocco, la cosa migliore secondo potrebbe essere:

  1. Aggiungi una casella di controllo per le impostazioni del tema.
  2. Nel vostro gancio pagina di pre-elaborazione, impostare una variabile booleana se la casella è selezionata o meno.
  3. Nel modello pagina, controllare la variabile, se è vero che si scrive il vostro codice dove si desidera.

Questo sarà essenzialmente la stessa cosa come sopra, solo tu hai l'impostazione nel tema, invece di aggiungere un blocco. Esso richiederà più lavoro.

Si può fare più o meno lo stesso in un modulo personalizzato, ma non ci vorrà molto senso di fare questo in un modulo, dal momento che è puramente di presentazione e si è dipende dal tuo tema in ogni modo.

ecco un piccolo trucco che funziona in Drupal 6 e 7

    $script = '//--><!]]></script><strong>this is bold html code</strong><script type="text/javascript"><!--//--><![CDATA[//><!--';
    drupal_add_js($script, 'inline', 'footer');

dal momento che è evidente che non si vuole modificare i file di modello o utilizzare uno qualsiasi degli altri metodi suggeriti sopra, questo dovrebbe funzionare per aggiungere HTML alla pagina esattamente come avviene per i CSS e js

I dont' consiglia di utilizzare blocchi, come il suo eccessivo per solo l'aggiunta di alcuni elementi sul piè di pagina. Qui è il gancio che è possibile utilizzare per aggiungere il contenuto prima di tag </body> per Drupal 7.

function hook_page_build(&$page) {
  $page['page_bottom']['YOUR_MODULE'] = array(
    '#markup' => '<div> I want to get inserted at the bootom of the page </div>',
  );
} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top