ایجاد Feed importer پیش فرض توسط کد نویسی

ماژول feeds دروپال یک ماژول فوق العاده است که من بارها از آن در کارهایم استفاده کرده ام و می کنم.
در خصوص این ماژول می توانید تحقیق کنید و یاد بگیرید.
در این مقاله قصد دارم فقط چگونگی ایجاد Feed importer های پیش فرض را توضیح دهم. و هدف هم از این کار، ایجاد یک منبع فارسی برای برنامه نویسان حرفه ای دروپال است.
کسانی که آشنایی ندارند، به لینک قبلی مراجعه کنند.


Feed importer پیش فرض، به Feed importer هایی می گویند که توسط کد نویسی در داخل ماژول ها به وجود آمده. در مقابل Feed importer هایی که کاربر در محیط گرافیکی درست می کند و در دیتابیس ذخیره می شوند، ولی Feed importer های پیش فرض در دیتابیس ذخیره نمی شوند بلکه در کد ذخیره می شوند.

برای ایجاد یک Feed importer پیش فرض باید به طریق زیر عمل کنیم:

1 - ابتدا یک Feed importer را در محیط گرافیکی ایجاد می کنیم. سپس آن پیکربندی کرده و ذخیره می کنیم.

2 - پس از این که Feed importer به خوبی آماده شد، به صفحه ی admin/build/feeds می رویم و روی لینک Export در جلوی نام Feed importer کلیک می کنیم تا ساختار Feed importer به صورت کد های php به ما تحویل داده شود. مثل زیر:

<?php
$feeds_importer = new stdClass;
$feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
$feeds_importer->api_version = 1;
$feeds_importer->id = 'node';
$feeds_importer->config = array(
  'name' => 'Node import',
  'description' => 'Import nodes from CSV file.',
  'fetcher' => array(
    'plugin_key' => 'FeedsFileFetcher',
    'config' => array(
      'direct' => FALSE,
    ),
  ),
  'parser' => array(
    'plugin_key' => 'FeedsCSVParser',
    'config' => array(
      'delimiter' => ',',
    ),
  ),
  'processor' => array(
    'plugin_key' => 'FeedsNodeProcessor',
    'config' => array(
      'content_type' => 'story',
      'update_existing' => 1,
      'expire' => '-1',
      'mappings' => array(
        0 => array(
          'source' => 'title',
          'target' => 'title',
          'unique' => FALSE,
        ),
        1 => array(
          'source' => 'body',
          'target' => 'body',
          'unique' => FALSE,
        ),
        2 => array(
          'source' => 'published',
          'target' => 'created',
          'unique' => FALSE,
        ),
        3 => array(
          'source' => 'guid',
          'target' => 'guid',
          'unique' => 1,
        ),
      ),
      'input_format' => 0,
      'author' => 0,
    ),
  ),
  'content_type' => '',
  'update' => 0,
  'import_period' => '-1',
  'expire_period' => 3600,
  'import_on_create' => 1,
);
?>

کد فوق را باید در داخل ماژول خود کپی کنیم.

3 - برای این منظور، باید هوک hook_feeds_importer_default() را تعریف کنیم.
کد فوق، همان طور که می بینید، یک متغیر $feed_importer ایجاد می کند. کافی است که هوک را تعریف کنیم و در انتها همین متغیر را return کنیم:

<?php
/**
* Default definition of 'myimporter'
*/
function mymodule_feeds_importer_default() {
  $export = array();
  $feeds_importer = new stdClass;
  $feeds_importer->disabled = TRUE;
  $feeds_importer->api_version = 1;
  $feeds_importer->id = 'myimporter';
  $feeds_importer->config = array(
  // ...
  );
  $export['myimporter'] = $feeds_importer;
  return $export;
}
?>

4 - سپس، برای این که هوک فوق که تعریف کردیم، وارد عمل شود و کار کند، باید هوک ctools_plugin_api نیز تعریف شود. به صورت زیر:

<?php
function mymodule_ctools_plugin_api($module = '', $api = '') {
  if ($module == "feeds" &amp;&amp; $api == "feeds_importer_default") {
    // The current API version is 1.
    return array("version" => 1);
  }
}
?>

به غیر از روش فوق، می توان از ماژول features نیز استفاده کرد...

 

مقاله در همین موضوع به انگلیسی: http://drupal.org/node/622698
مقالات مرتبط:
http://ring.ciard.net/consuming-agrifeeds-drupal-feeds

مطالب مرتبط:

نظرات شما

قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.