jquery get atau memposting metode untuk modul blok drupal

7

Apakah mungkin menggunakan jquery get atau memposting metode untuk mengambil data dinamis dalam modul blok drupal7.x. Saya seorang pemula untuk drupal.

Ini adalah file event_calendar.module saya

      function event_calendar_help($path, $arg)
      {
          switch ($path) 
          {
          case "admin/help#event_calendar":
          return '<p>'.  t("A block module that creates events and lists them in a event calendar") .'</p>';
      break;
          }
    }
     /**
    * Implements hook_block_info().
    */
    function event_calendar_block_info() {
      $blocks['event_calendar'] = array(
        'info' => t('Event calendar'), 
        'cache' => DRUPAL_CACHE_PER_ROLE, //Default
      );
      return $blocks;
    }

    /**
    * Implements hook_block_view().
    *
    * Prepares the contents of the block.
    */
    function event_calendar_block_view($delta = '') 
    {
      switch($delta)
      {
        case 'event_calendar':
          $block['subject'] = NULL;
          if(user_access('access content'))
           {
            $items = array();        
            $basepath = drupal_get_path('module', 'event_calendar');
            $markup = '<div id="content">
                    <div style="float:right;margin-bottom:5px">
                        <label style="float:left;padding:3px;">Week :</label>
                        <div id="date_picker">
                            <span id="startDate"></span></span> - <span id="endDate"></span>
                            <div class="week-picker" style="display:none;position:absolute"></div>   
                        </div>
                    </div>
                    <hr style="clear:both;"/>
                    <div id="calender_content">

                    </div>
                    <div id="color_code" style="float:right">
                        <div class="lane1 colorbox"></div><div style="float:left">Lane 1</div>
                        <div class="lane2 colorbox"></div><div style="float:left">Lane 2</div>
                        <div class="lane3 colorbox"></div><div style="float:left">Lane 3</div>
                        <div class="lane4 colorbox"></div><div style="float:left">Lane 4</div>
                    </div>
                </div>';
      $block['content'] = array(
        '#markup'   => $markup,
        '#attached' => array
            (
            'css' => array($basepath . '/css/event_calendar.css',$basepath . '/css/smoothness/jquery-ui-1.8.16.custom.css'),
            'js'  => array($basepath . '/javascript/event_calendar.js',$basepath . '/javascript//jquery-ui-1.8.16.custom.min.js'),
            ),
        );

          }
return $block;
      }

    } 

Saya ingin tahu cara menulis fungsi di dalam file .module di atas untuk mengakses beberapa konten secara dinamis melalui jquery get atau memposting metode?

Atau haruskah saya menggunakan sesuatu seperti 'hook_menu' selain blok?

Harish Anchu
sumber

Jawaban:

3

Untuk menggunakan get data dengan jquery ajax, Anda perlu tautan menu seta pertama untuk mendengarkan permintaan ajax Anda, dan dalam panggilan balik menu Anda, Anda melewatkan blok atau data yang Anda inginkan.

function yourmodule_menu () {
   $items=array();
   $items['youruniqepath'] =array(
        'title' => 'my menu',
        'description' => 'A menu link to handle ajax request',
        'page callback' => 'yourhandlerfunction',
        'access callback' => TRUE, //you can set it with your permission
      );
   return $items;
   }

dan dihalismu hanya perlu melewati blok:

function yourhandlerfunction () {
  //with any method you want get your block,
  // I suggest something like this
    $block = module_invoke('module_name', 'block_view', 'block_delta');
    print render($block);
}

dan di sisi klien Anda dapatkan dengan sesuatu seperti ini

$.ajax({
    type: "POST",
    url: 'youruniqepath',
    //data: {}, you can also pass block name and act more dynamicly
    success: function (data){
        $('#yourplace').html(data);
    }
});
Yusef
sumber