Question

Pour ajouter le javascript, vous pouvez utiliser:

drupal_add_js

similaire pour css:

drupal_add_css

Mais si je veux juste ajouter html à la fin de ma page. C'est à dire. Ajouter un div avec un texte en elle à la fin de la page?

Était-ce utile?

La solution

Beaucoup de suggestions fonctionnent ici si vous voulez que votre modification soit THEMATIQUE, mais si vous voulez que cela vienne d'un module, en utilisant une zone de bloc, modèle de page ou prepocess ne sera pas coupé, parce que vous attacher la modification du thème.

Du point de vue modulaire, les options suivantes sont mieux:

hook_footer () - http: // api. drupal.org/api/function/hook_footer/6 :: my_module_footer () retourne une chaîne de HTML, qui peut même être javascript. Par exemple.

function my_module_footer(){

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

}

Vous pouvez utiliser $ _GET drupal [ « q »] pour obtenir l'URL de la page et avoir que le retour soit conditionnel à l'URL de la page.

Dans le cas contraire, j'utilise parfois $ GLOBALS [ "_ add_my_footer"] comme un booléen, et le fixer à divers points dans le module, puis dans hook_footer (), voir s'il est vrai.


drupal_add_js - api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: Vous pouvez utiliser cette option pour ajouter le javascript au pied de page en définissant la $ paramètre portée au « pied de page » - par exemple

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

}

Notez que je mets que drupal_add_js dans hook_init () -. Je l'ai fait parce que si vous ne le faites pas, pourrait se perdre le script lors de l'utilisation de la mise en cache fonction agressive de Drupal

Malheureusement, il n'y a pas de paramètre de portée de $ pour drupal_add_css

Autres conseils

hook_footer n'a pas survécu à Drupal 6, voici la fonction équivalente et comment la mettre en œuvre dans 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>',
    );
  }
}

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

Vous pouvez ajouter ce qui suit au fichier template.php de votre thème:

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

Drupal a un crochet, vous pouvez mettre en œuvre et ajouter dans le code que vous souhaitez au bas de la page - hook_footer. Voir http://api.drupal.org/api/function/hook_footer/6

Vous pouvez écrire un bloc pour le faire et mettre le bloc dans la fermeture.

... ou, probablement pas aussi recommandé que les autres réponses, mais plus direct, vous pouvez ajouter le code HTML directement dans le fichier page.tpl.php.

Il y a déjà Beed fait quelques bonnes suggestions:

  • L'utilisation d'un bloc
  • Modèles d'édition
  • Utilisation de la fonction prétraiter.

La chose la plus facile serait d'ajouter un bloc que vous créez, où vous pouvez mettre votre balisage personnalisé. Vous pouvez même créer un modèle spécial pour elle, de sorte que vous ne recevez pas votre balisage bloc habituel drupal, mais seulement ce que vous écrivez dans le contenu du bloc.

Cela devrait couvrir vos besoins:

  • Vous avez le contrôle de 100% par rapport à où le balisage est généré (Vous pouvez définir la région dans votre eux)
  • Vous avez le contrôle de 100% par rapport à ce que le balisage est généré

Maintenant, si vous ne voulez pas utiliser des blocs, parce que vous ne voulez pas que les administrateurs du site à savoir sur le bloc, la 2ème meilleure chose serait:

  1. Ajouter une case à cocher vos paramètres de thème.
  2. Dans votre crochet page prétraiter, définir une variable booléenne si la case est cochée ou non.
  3. Dans votre modèle de page, vous vérifiez la variable, s'il est vrai que vous écrivez votre balisage où vous le souhaitez.

Ce sera essentiellement la même chose que ci-dessus, vous seul avez le paramètre dans votre thème, au lieu d'ajouter un bloc. Il faudra plus de travail.

Vous pouvez faire à peu près la même chose dans un module personnalisé, mais il ne fera pas beaucoup de sens de le faire dans un module, car il est la présentation purement et vous dépendent de votre thème de toute façon.

Voici une petite astuce qui fonctionne dans 6 et 7 drupal

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

car il est évident que vous ne voulez pas modifier les fichiers de modèle ou utiliser l'une des autres méthodes suggérées ci-dessus, cela devrait fonctionner pour ajouter à la page html comme il le fait pour js et css

Je ne » recommande d'utiliser le bloc, comme trop pour simplement ajouter quelques éléments sur le pied de page. Voici le crochet que vous pouvez utiliser pour ajouter le contenu avant tag </body> pour 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>',
  );
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top