Drupal 6 javascript在模块块中用于首页

时间:2013-05-15 00:16:18

标签: javascript drupal drupal-6

我试图在drupal网站的首页上创建一个简单的图像滑块。我写了一个基本大纲如下的模块

<?php

function slider_init(){
  drupal_add_js(drupal_get_path('module', 'slider') .'/slider.js');
}

function slider_block($op = 'list', $delta = 0, $edit = array()) { 
   $block = array();

  switch ($op) { 
    case "list":
        // Generate listing of blocks from this module, for the admin/block page
        $block[0]["info"] = t("slider");
        break;

    case "view":
    // Generate content for blocks from this module
    $block_content = "";
    $block_content .= "hello";


    //Query for the projects 
      $icons = db_query("SELECT * FROM {alumni_frontpage_projects}"); 

    //Initiation arrays from each table column: title, description, url, icon link 
      $links = array();
      $title = array();
      $description = array();
      $url = array();

     //Generate arrays from each table column: title, description, url, icon link  
      while($icon_data = db_fetch_array($icons)){

          $links[]      =   $icon_data['slider_image_location'];
          $title[]      =   $icon_data['title'];
          $description[]=   $icon_data['description'];
          $url[]        =   $icon_data['url'];

      }

      //Count elements in array and randomly choose one
      $res = count($links)-1;
      $seed = rand(0,$res);

      //Generate HTML and Javascript of Slider


        //Check that content isn't empty
        if ($block_content == "") {
            $block_content = t("Sorry No Content");           
        }

        $block["content"] = $block_content;
        break;

    case "save":
       break;

    case "configure":
       break;
  }          

  return $block;
}

现在,一切都很好。我生成一个块,我可以把它放在我想要的任何地方。大。但是我真的想在这个块中使用javascript,这样我就可以传递数组并使用onclick事件来浏览我查询的数组中的一些图像。所以我发现我必须通过将变量转换为javascript,我必须识别我想在模块中使用的javascript文件。

 //add variable to the Javascript
  drupal_add_js(array('slider_settings' => array('variable_name' => $variable_name)), 'setting');

  //add Javascript file to module
  drupal_add_js(drupal_get_path('module', 'slider') .'/slider.js');<br>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我把这些放在hook_init但是没有发生!!!!!我测试了看基本警报。如果我将硬编码放入_block,例如:

$block_content .= '
<script type="text/javascript">
var x
x = 50;
document.write(x); //prints the value of x
</script>';

然后我看到&#39; 50&#39;打印。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果我尝试将变量传递给硬编码脚本。这也不起作用。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果我尝试通过前面的代码写50,但是从一个名为slider.js的单独文件中使用&#34; drupal_add_js(drupal_get_path(&#39; module&#39;,&#39; slider&#)在同一个文件夹中39;)。&#39; /slider.js');&#34;,那也不起作用(即使我没有传递变量)



那到底是怎么回事!!我是否有可能错过一些重要的核心drupal文件?有没有办法麻烦拍摄这个?

谢谢!

1 个答案:

答案 0 :(得分:0)

drupal_add_js应该在hook_init()中工作。首先检查你的钩子函数是否正确地命名为ModuleName_init()。