Drupal 7
JSON
ファイルによってフィードされる予定のWebサイト。このファイルは実際には、定期的に(例では3時間ごとに)実行されるETL
ツールによって処理および更新されます。
ETL
ツールが出力JSONファイルを処理したら、Drupal Feeds
モジュールにインポートを開始するように指示する方法が必要です。
出来ますか ?それともCRON
でこれを行う必要がありますか?
理想的には、このジョブは特定のURL呼び出しによってトリガーされます(CRONが特定のURLにアクセスして手動で呼び出せるのと同じように)。
@Gaydaburaの手がかりに基づいて、モジュールを作成しました。ここに答えがあります:
1。独自のパスを定義するためにhook_menuを使用
function toot_menu() {
$items = array();
$items['toot/import'] = array(
'page callback' => 'toot_callback',
'title' => 'Import tool',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK
);
return $items;
}
2。ドキュメントを使用してデータを解析する関数を記述
function toot_callback($key = '') {
if ($key != 'defined_key') {
return t('Unauthorized access');
}
else {
$myFeed = feeds_source('feed_unique_id');
while (FEEDS_BATCH_COMPLETE != $myFeed->import());
return t('Import successfull');
}
}
プログラムでフィードインポーターをトリガーする場合-
1) feeds_source() を使用してフィードソースをロードします-引数importer id [これはインポーターのマシン名です; 'feeds_source'テーブルで確認できます]
$feeds_source = feeds_source([importer_id]);
2)構成をセットアップします-
$feeds_config = $feeds_source->getConfigFor($feeds_source->importer->fetcher);
$feeds_config['source'] = $url;//url of file | url of site
3)設定をフィードソースに設定します
$feeds_source->setConfigFor($feeds_source->importer->fetcher, $feeds_config);
$feeds_source->save();
4)インポートを開始します
$feeds_source->startImport();
Urlからデータを取得するためにこれを実装しました。ファイルで試したことはありませんが、これは動作するはずですが、構成部分にいくつかのマイナーな変更がある可能性があります。
それ以外の場合は、cronを使用してもフィードをトリガーできると思います。 Elysia Cron は、「各タスクを細かく制御し、カスタムcronジョブをサイトに追加するいくつかの方法」を提供する優れたモジュールです。
これがお役に立てば幸いです。