web-dev-qa-db-ja.com

フィードを使用して複数の言語をインポートする

私はすでに約1500の記事のデータセットをすべて英語でインポートしました。ノードIDが一致するが、異なる言語の別のデータセットがあります。 2番目のファイルをDrupal 7にインポートして、ローカライズされたコンテンツを既存のデータと組み合わせることができますか?

現在、データをインポートしようとすると、既存のコンテンツが上書きされるため、言語コードのみが異なるように共存させる必要があります。

5
eternus

2つのxmlファイルからインポート(言語ごとにオン)、私の経験的ソリューション:

  1. 2つのフィードインポートを作成しました。
  2. それぞれに言語フィールドを強制しました。
  3. コンテンツごとに(各言語に1つずつ)2つの別個のノードが作成されましたが、翻訳はリンクされていません。
  4. SQLクエリを使用してジョブを完了しました。これはフィードのuuidに基づいています

注:これが機能するためには、2つのソース間でGUIDが一致している必要があります。これをノードタイトルに設定している場合は、以前のインポートを更新するため、コンテンツを置き換えるオプション:/

UPDATE
    node n,
    feeds_item lng1,
    feeds_item lng2
SET
    n.tnid = lng1.entity_id
WHERE
    (
        n.nid = lng1.entity_id
        OR
        n.nid = lng2.entity_id
    )
    AND lng1.id='feeds_importname_for_lng1'
    AND lng2.guid=lng1.guid
    AND lng2.id='feeds_importname_for_lng2'
6
Teenage

SQLクエリが必要な場合、これを実現できます。

また、フィードのフィールド翻訳で何かしたい場合は、最新バージョンであることを確認してください。 https://www.drupal.org/node/118344 のため、1年前より新しいです。このバージョンはエンティティの翻訳をサポートしています。これはもちろん必要です。フィールドを翻訳することができます。したがって、1つのエンティティと複数のフィールドがあります。これらのフィールドは個別に翻訳できます。

インポートする両方のフィードインポーターに一意の識別子を設定する必要がありますが、これらはもちろん同じである必要があります(ypur一致するノードID)。次に、プロセッサのマッピング設定で、入力レコードを特定のフィールドの変換に変換するように設定できます。

そう、

  1. 各言語に1つずつ、2つのインポーターを作成します。
  2. 両方で、フィードプロセッサのマッピング設定で、「一致するノードID」を「一意として使用」として設定します。
  3. マッピングで言語設定を設定します。

言語設定が表示されている場合は、エンティティの翻訳とフィールドの設定を再確認してください。

0
firfin