Pergunta

Para adicionar JavaScript, você pode usar:

drupal_add_js

E semelhante para CSS:

drupal_add_css

Mas e se eu quiser apenas adicionar HTML no final da minha página. Ou seja, adicione uma div com algum texto no final da página?

Foi útil?

Solução

Muitas sugestões aqui funcionam se você deseja que sua alteração seja baseada no tema, mas se você deseja que isso venha de um módulo, usando uma região de bloco, modelo de página ou preparação de página não o corte, porque Você está amarrando a alteração ao tema.

Do ponto de vista modular, as seguintes opções são as melhores:

Hook_footer () -- http://api.drupal.org/api/function/hook_footer/6 :: my_module_footer () deve retornar uma sequência de html, que pode até ser JavaScript. Por exemplo

function my_module_footer(){

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

}

Você pode usar o drupal $ _get ['q'] para obter o URL da página e fazer com que esse retorno seja condicional para o URL da página.

Caso contrário, às vezes eu uso $ globals ["_ add_my_footer"] como um booleano e o coloco em vários pontos do módulo e depois em Hook_footer (), veja se é verdade.


drupal_add_js -api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: Você pode usar isso para adicionar javascript ao rodapé, definindo o parâmetro $ scope como "rodapé"-por exemplo

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

}

Observe que eu coloquei que o drupal_add_js em Hook_init () - fiz isso porque, se não o fizer, o script poderá se perder ao usar o recurso agressivo de cache do Drupal.

Infelizmente, não existe um parâmetro $ scope para drupal_add_css

Outras dicas

Como hook_footer Não sobreviveu ao Drupal 6, aqui está a função equivalente e como implementá -la no 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>',
    );
  }
}

(A partir de http://preprocess.me/drupal-ookfooter-in-drupal-7)

Você pode adicionar o seguinte ao modelo do seu tema.php:

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

O Drupal possui um gancho que você pode implementar e adicionar em qualquer código que desejar ao rodapé da página - Hook_footer. Ver http://api.drupal.org/api/function/hook_footer/6

Você pode escrever um bloco para fazer isso e colocar o bloco no fechamento.

... ou, provavelmente não é tão recomendado quanto as outras respostas, mas mais direto, você pode adicionar o HTML diretamente ao arquivo página.tpl.php.

Já foi feito algumas boas sugestões:

  • Usando um bloco
  • Modelos de edição
  • Usando a função de pré -processamento.

A coisa mais fácil seria adicionar um bloco que você cria, onde você pode colocar sua marcação personalizada. Você pode até criar um modelo especial para ele, para não obter sua marcação habitual de bloco Drupal, mas apenas o que você escreve no conteúdo do bloco.

Isso deve cobrir suas necessidades:

  • Você tem 100% de controle sobre onde a marcação é gerada (você pode definir a região em seus deles)
  • Você tem 100% de controle sobre qual marcação é gerada

Agora, se você não quiser usar blocos, porque não deseja que os administradores do site saibam sobre o bloco, a segunda melhor coisa seria:

  1. Adicione uma caixa de seleção às configurações do seu tema.
  2. No seu gancho de página de pré -processamento, defina uma variável booleana se a caixa de seleção estiver marcada ou não.
  3. No seu modelo de página, você verifica a variável, se for verdade que você escreve sua marcação onde deseja.

Isso basicamente fará a mesma coisa que acima, apenas você tem a configuração do seu tema, em vez de adicionar um bloco. Isso exigirá mais trabalho.

Você pode fazer praticamente o mesmo em um módulo personalizado, mas não fará muito sentido fazer isso em um módulo, pois é puramente apresentação e você depende do seu tema de qualquer maneira.

Aqui está um pequeno truque que funciona no Drupal 6 e 7

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

Como é evidente que você não deseja modificar os arquivos do modelo ou usar qualquer um dos outros métodos sugeridos acima, isso deve funcionar para adicionar html à página, exatamente como para JS e CSS

Eu não recomendo usar o bloco, pois seu exagero apenas adicionando alguns elementos no rodapé. Aqui está o gancho que você pode usar para adicionar o conteúdo antes </body> Tag para o 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>',
  );
} 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top