Hängen Sie ein Skript an eine bestimmte Knoten-ID oder Ansicht an


7

In Drupal 7 können Sie den folgenden Code verwenden, um ein Skript an einen bestimmten Inhaltstyp anzuhängen:

function THEMENAME_preprocess_node(&$variables) {
  if ($variables['type'] == 'INSERT_CONTENT_TYPE') {

        // include javascript
        drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');

      }

    }

Welchen Code müssen Sie verwenden, um ein Skript an eine bestimmte Knoten-ID oder eine bestimmte Ansicht anzuhängen?

Ich habe versucht, variables['type']mit verschiedenen Gegenständen zu tauschen , aber keiner scheint zu funktionieren.


2
Wo fügen Sie diesen Code hinzu? Eine Vorverarbeitungsfunktion?
Shoaib Nawaz

Hallo, ich habe meine Antwort aktualisiert, um es klarer zu machen
big_smile

Antworten:


14

Knoten-ID:

function THEMENAME_preprocess_node(&$variables) {
  if ($variables['nid'] == 'INSERT_NODE_ID') {
    // include javascript
    drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
  }
}

Aussicht:

function THEMENAME_preprocess_views_view(&$variables){
  if ($variables['name'] == 'INSERT_VIEW_MACHINE_NAME') {
    // include javascript
    drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
  }
}

Vielen Dank! Dies bringt die Prämie, da es die sauberste Lösung ist und sowohl für den Knoten als auch für die Ansicht funktioniert.
big_smile

Ich bin mir ziemlich sicher, dass Sie vor "INSERT_SCRIPT" ein "/" benötigen. (zB /scripts/custom.js)
Chris Happy

1

Wenn Sie D6 verwenden. Versuchen Sie, mit JS Injector benutzerdefiniertes Javascript in eine Seite oder Ansicht einzufügen.


Hallo, ich benutze Drupal 7 und möchte es ohne ein zusätzliches Modul machen.
big_smile

0

Versuche dies:

function THEMENAME_preprocess_node($node) {
    if ($node->nid == INSERT_NODE_ID) {
        // include javascript
        drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
    }
}

0

Wenn ich Ihre Frage gut verstehe, warum nicht Ihr Skript anzeigen, das den Alias ​​Ihrer Ansicht oder Ihres Knotens oder Ihrer Ansicht enthält? (ist auch mit der Node ID möglich)

Ich habe diese Funktionen mit _preprocess_node(Knoten) und auch mit _preprocess_page(für Ansichten und Knoten) in Drupal 6und getestet 7.

Dies ist für Knoten mit ID mit _preprocess_node:

function seven_preprocess_node(&$vars) {
    if(isset($_GET['q'])){
        $nodeID = '9';
          if(arg(1) == $nodeID){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
} 

Dies gilt für Knoten mit Alias ​​mit _preprocess_node:

function THEMENAME_preprocess_node(&$variables) {
    if(isset($_GET['q'])){
          $path = drupal_get_path_alias($_GET['q']);
          if(preg_match('#test_page#', $path)){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
}

und diese Funktion mit _preprocess_pageist nützlich für Knoten und / oder Ansichten (Alias):

function THEMENAME_preprocess_page(&$variables) {
    if(isset($_GET['q'])){
          $path = drupal_get_path_alias($_GET['q']);
          if(preg_match('#test_page#', $path)){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
}

Diese letzte Funktion dient nur als Beispiel für eine Funktion, die nach einem Alias ​​für Ihre Ansicht / Ihren Knoten oder Ihre Knoten-ID sucht:

function THEMENAME_preprocess_page(&$variables) {
    if(isset($_GET['q'])){
        $script = '/test.js';//script name
        $currentPath = drupal_get_path_alias($_GET['q']);//current alias
        $targetPath = '#test_view#';//alias to match (delimiter is #), is for example of your view's page.
        $targetNodeID = '9';//node ID to match
          if(arg(1) == $targetNodeID || preg_match($targetPath, $currentPath)){
              drupal_add_js(path_to_theme() . $script);
          }
     }
}

Ich hoffe, dass Informationen nützlich sind.


0

Bei mir hat nichts funktioniert, also habe ich mit 'Preprocess'-Hook nachgesehen, das funktioniert wie folgt: -

function MYMODULE-or-THEME_preprocess(){
    if(isset($_GET['q'])){
    $nodeID = '232'; //NODE ID TO CHECK
          if(arg(1) == $nodeID){              
     drupal_add_js(drupal_get_path('module', 'MYMODULE').'/js/myscript.js');
         } 
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.