Frage

Zum hinzufügen von javascript, die Sie verwenden können:

drupal_add_js

Und ähnlich wie bei css:

drupal_add_css

Aber was ist, wenn ich nur wollen, um html-Code hinzufügen am Ende meiner Seite.I. e.Fügen Sie ein div mit text am Ende der Seite?

War es hilfreich?

Lösung

Viele Vorschläge hier arbeiten, wenn Sie Ihre Veränderung wollen themenbasierte sein, aber wenn man dies von einem Modul kommen will, mit einem Blockbereich, Seitenvorlage oder Seite prepocess wird es nicht geschnitten, weil Sie die Änderung des Themas sind zu binden.

Aus einem modularen Sicht sind die folgenden Optionen am besten können:

hook_footer () - http: // api. drupal.org/api/function/hook_footer/6 :: my_module_footer () soll eine Reihe von HTML zurückgeben, die sogar Javascript sein kann. Z.B.

function my_module_footer(){

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

}

Sie können Drupal $ _GET verwenden [ ‚q‘], um die Seite URL zu bekommen und haben die Rückkehr auf die Seite URL abhängig gemacht werden.

Ansonsten habe ich manchmal verwenden $ GLOBALS [ "_ add_my_footer"] als boolean, und legen Sie es an verschiedenen Stellen in dem Modul, dann in hook_footer () sehen, ob es wahr ist.


drupal_add_js - api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: Sie können diese verwenden, um die Fußzeile hinzuzufügen Javascript durch die Einstellung $ scope-Parameter auf "footer" - zB

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

}

Beachten Sie, dass ich, dass drupal_add_js in hook_init put () - Ich tat das, weil, wenn Sie dies nicht tun, könnte das Skript verloren gehen, wenn Drupal aggressive Caching-Funktion mit

.

Leider gibt es keine $ scope Parameter für drupal_add_css

Andere Tipps

Als hook_footer nicht überleben Drupal 6, hier ist die entsprechende Funktion und wie es in Drupal zu implementieren 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>',
    );
  }
}

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

Sie können den folgenden zu Ihrem Thema der template.php-Datei hinzu:

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

Drupal hat einen Haken, die Sie umsetzen können, und fügen Sie in was auch immer-code, den Sie möchten, um die Fußzeile auf der Seite - hook_footer.Finden http://api.drupal.org/api/function/hook_footer/6

Sie könnten einen Block schreiben, es zu tun und den Block in der Schließung setzen.

... oder, wahrscheinlich nicht so wie die anderen Antworten zu empfehlen, aber mehr direkte, können Sie die HTML direkt in die page.tpl.php Datei hinzufügen.

gibt es bereits einige gute Vorschläge gemacht beed:

  • Mit einem Block
  • Bearbeiten von Vorlagen
  • Mit Vorprozess Funktion.

Die einfachste Sache wäre es, einen Block zu addieren, die Sie erstellen, in dem Sie Ihre individuellen Auszeichnungs setzen können. Sie könnten sogar eine spezielle Vorlage für sie schaffen, damit Sie nicht Ihren üblichen Drupal Block Markup, aber nur das, was Sie in dem Block Inhalt schreiben.

Das sollte Ihre Bedürfnisse abdecken:

  • Sie haben 100% Kontrolle darüber, wo das Markup generiert (Sie können die Region in der sie definieren)
  • Sie haben 100% Kontrolle über das, was Markup generiert

Nun, wenn Sie nicht wollen, Blöcke verwenden, da Sie nicht die Site-Administratoren wollen über den Block wissen, die 2. beste Sache wäre:

  1. Fügen Sie ein Kontrollkästchen zu Ihrem Thema Einstellungen.
  2. In Ihrer Vorprozess Seite Haken, stellen Sie eine boolean Variable, wenn das Kontrollkästchen aktiviert ist oder nicht.
  3. In Ihrer Seite Vorlage, überprüfen Sie für die Variable, wenn es wahr ist, schreiben Sie Ihren Markup, wo Sie es wollen.

Dies wird tun im Grunde das gleiche wie oben, nur die Einstellung in Ihrem Thema haben, anstatt einen Block hinzuzufügen. Es wird mehr Arbeit erfordern.

Sie können in einem benutzerdefinierten Modul so ziemlich das gleiche tun, aber es wird nicht viel Sinn machen, dies in einem Modul zu tun, da es rein Präsentation ist und Sie sind auf dem Thema abhängig sowieso.

Hier ist ein kleiner Trick, der in funktioniert Drupal 6 und 7

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

, da es offensichtlich ist, dass Sie nicht möchten, dass die Template-Dateien ändern oder eine der anderen Methoden, die oben vorgeschlagen verwenden, sollte diese Arbeit html nur auf der Seite hinzuzufügen, wie es funktioniert für js und CSS

ich nicht‘empfehlen Block verwenden, als übertrieben für nur einige Elemente in der Fußzeile hinzufügen. Hier ist der Haken, dass Sie den Inhalt vor </body> Tag für Drupal 7 hinzufügen können.

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>',
  );
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top