jquery get или post методы для блочного модуля drupal


7

Можно ли использовать методы jquery get или post для извлечения данных динамически в блочном модуле drupal7.x. Я новичок в друпале.

Вот мой файл event_calendar.module

      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;
      }

    } 

Я хочу знать, как написать функции в файле выше .module для динамического доступа к некоторому контенту с помощью метода jquery get или post?

Или я должен использовать что-то вроде «hook_menu», кроме блока?

Ответы:


3

Для использования get data by jquery ajax вам нужна первая ссылка меню seta для прослушивания вашего запроса ajax, а при обратном вызове вашего меню вы передали обратно блок или любые данные, которые вы хотите.

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;
   }

а в вашем городе просто нужно пройти блок:

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);
}

и в вашей клиентской среде получить что-то вроде этого

$.ajax({
    type: "POST",
    url: 'youruniqepath',
    //data: {}, you can also pass block name and act more dynamicly
    success: function (data){
        $('#yourplace').html(data);
    }
});
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.