1

そのため、Drupal 7 で「ブログ ゲートウェイ」を構築しようとしています。これにより、ユーザーは自分の外部サイトからフィードを追加/編集/削除して、評価やコメントなどの集合ストリームに送信できるようになります。

このサイトは、次のようなことを行う必要があります。

  1. ユーザーが登録フォームからフィードの URL を追加できるようにする
  2. 登録時に (その後も継続的に) フィードから最新の投稿をインポートします。
  3. フィード内のアイテムごとにノードを作成し、他のユーザーが評価できるようにします。
  4. これらのノードからリストを作成します。

ビューとフィード モジュールを組み合わせることで、ほとんどのことを実行できます (フィードのインポート、各項目のノードの作成、リストの作成)。Feedsモジュールを使用して、ユーザーが「手動で」フィードをインポートできるようにしました。

問題は、ユーザーがインポートできるフィードの数を制限する方法が見つからないことと、登録フォームの URL をインポートの基礎にする方法がわからないことです。

Rules モジュールを使用してこれらの問題を解決しようとしてきましたが、結果はありません。

プロファイル ブログ情報モジュールの行に沿った何かでうまくいくと思いますが、これは Drupal 6 でしか利用できず、フィード モジュールでは機能しません。

解決策または代替案について何か考えはありますか?

4

1 に答える 1

0

ユーザーがインポートできるフィードの数を制限する方法が見つかりません

フィード モジュールのデフォルト設定を使用する場合は、「フィード」コンテンツ タイプが既にあるはずです。したがって、ユーザーがインポートできる「フィード」の数を制御したい場合は、http://drupal.org/project/node_limitでうまくいくはずです。ユーザーが作成できる「フィード」コンテンツ タイプのノード数を設定するのに役立ちます (どちらも同じはずですよね?)。

登録フォームの URL をインポートのベースにする方法

ここで、カスタム モジュール ルートを提案します。これでうまくいくはずですが、プロジェクトの性質や Drupal の専門知識のレベルによっては、カスタム モジュールを追加したい場合と追加したくない場合があります。

  1. URL フィールド (おそらくURL フィールド タイプのインスタンス) をユーザー プロファイルに追加します。登録フォームに表示できるようにチェックを入れます。としましょうfeed_url

  2. 新しいユーザーがサイトに追加されたときに呼び出されるhook_user_insert () を実装します。

    /**
     * Implements hook_user_insert().
     */
    function MY_MODULE_user_insert(&$edit, $account, $category) {
      if (isset($edit['feed_url'])) {
        $index = array('feed_url', LANGUAGE_NONE, 'value');
        // Get the feed URL from the registration form values.
        $feed_url = drupal_array_get_nested_value($edit, $index);
        if (!empty($feed_url)) {
          // Create a new feed on behalf of the user
          _MY_MODULE_create_feed($feed_url, $account->uid);
        }
      }
    }
    
    /**
     * Creates a new feed on behalf of a user.
     *
     * @param string $url
     *   Feed URL
     * @param numeric $uid
     *   {users}.uid of the user for whom this feed is being created.
     */
    function _MY_MODULE_create_feed($url, $uid) {
      // @todo Add more validations here
      $node = new stdClass();
      $node->uid = $uid;
      $node->type = 'feed';
      $node->feeds['FeedsHTTPFetcher']['source'] = $url;
      $node->language = language_default('language');
      node_save($node);
    }
    
于 2012-10-04T07:27:29.920 に答える