تصویر محمدعلی اکبری
پیاده سازی AJAX در دروپال 7

برای بکارگیری چهارچوب آجاکس در دروپال به صورن خلاصه باید چهار مرحله زیر را طی کنید.

گام اول: تعریف مسیر‌های مربوط به نسخه آجاکس و نسخه معمولی

/**
 * Implements hook_menu().
 */
function sample_ajax_menu() {
  $items['sample-ajax/page'] = array(
    'page callback' => 'sample_ajax_page',
    'access arguments' => array('access content'),
    'type' => MENU_NORMAL_ITEM,
  );
  $items['sample-ajax/nojs/%node'] = array(
    'page callback' => 'sample_ajax_callback',
    'page arguments' => array(1, 2),
    'access arguments' => array('access content'),
    'type' => MENU_NORMAL_ITEM,
  );
  $items['sample-ajax/ajax/%node'] = array(
    'delivery callback' => 'ajax_deliver',
    ) + $items['sample-ajax/nojs/%node'];

  return $items;
}

گام دوم: اضافه کردن کتابخانه مربوط به آجاکس دروپال

drupal_add_library('system', 'drupal.ajax');

گام سوم: تولید لینک‌های مربوط به رویداد آجاکسی

function sample_ajax_page() {
  drupal_add_library('system', 'drupal.ajax');
  return array(
    '#markup' => l(t('Click here'), 'sample-ajax/nojs/1', array('attributes' => array('class' => array('use-ajax')))),
  );
}

گام چهارم: ایجاد پاسخ آجاکسی

function sample_ajax_callback($ajax, $node) {
  $is_ajax = $ajax === 'ajax';

  if ($is_ajax) {
    $commands = array();
    $node_view = node_view($node);
    $commands[] = ajax_command_html('#block-system-powered-by div.content', drupal_render($node_view));
    return array(
      '#type' => 'ajax',
      '#commands' => $commands,
    );
  } else {
    return node_view($node);
  }
}

افزودن نظر جدید