2010-12-20 42 views
6

我正在使用migrate module將來自多個來源的數據複製到新的drupal安裝。到目前爲止,我能夠從模塊提供的示例中複製很多我需要的內容。我目前堅持爲新創建的節點添加術語或分類。這個例子表明:如何使用Drupal遷移添加分類術語

// These are related terms, which by default will be looked up by name 
$this->addFieldMapping('migrate_example_beer_styles', 'terms') 
    ->separator(','); 

我就找到了migrate_example_beer_styles目的地映射,它似乎是machine name該分類。

我試圖模仿與每一個變化這種行爲就是我machine_name應該的,但條款似乎從來沒有得到相關:

通過ID:

// where source breed_id is '1,100' - it finds mapped values accordingly 
$this->addFieldMapping('breeds', 'breed_id') 
    ->sourceMigration('BreedMigration') 
    ->separator(',') 

而且,通過名稱:

// where source breeds is 'Dogs,German Shepherd' 
$this->addFieldMapping('breeds', 'breeds') 
    ->separator(','); 

我錯了,假設目的地映射是machine name分類?

這個版本的migrate module最近發佈了,我還沒有在網上找到任何其他有用的例子。

回答

1

我目前正在使用migrate模塊,我同意這個文檔有點想要。 :)

詞彙表的「機器名稱」在詞彙表「模塊」中列出。嘗試使用該值。請注意,您需要將文本輸入到映射中,而不是ID。

+1

我偶然發現了你推薦的解決方案。我使用了詞彙名稱(需要確切的大小寫),而不是機器友好名稱。還發現在文本上的映射,而不是在id,工程。 – labue 2010-12-27 17:53:40

13

這個問題似乎仍然有一些意見,所以我想我會添加我發現的其他東西。雖然接受的答案工作,你能夠在ID映射Vocabs:

$this->addFieldMapping('Exact Case Sensitive Vocab Name', 'source_field_name') 
    ->sourceMigration('ExactSourceClassName') 
    ->arguments(array('source_type' => 'tid')) 
    ->separator(','); 

->separator(',')用於傳遞源ID的分隔字符串。顯然,如果你映射了一個值的數組,那麼就關閉它。

+0

我試圖簡單地通過我的遷移中的tid,直到我發現此問題,我無法弄清楚爲什麼這不起作用。現在我明白了! – geerlingguy 2011-07-28 18:33:34

+1

只是想指出,這段代碼將使用最新版本的Migrate模塊發出警告。 正確的方法來映射在身份證上的詞彙表是: '$ this-> addFieldMapping('Exact Case Sensitive Vocab Name:source_type') - > defaultValue('tid');' – bmunslow 2014-09-08 13:19:57

+1

好吧如果我有(' field_city')(entityReference)用於目標分類術語和('Cities')分類詞彙表和列('name')來自我的源表,我如何實現這一點? '$ this-> addFieldMapping('Cities:source_type') - > defaultValue('tid');' 我還需要什麼? – 2015-11-11 11:45:04

1

這是我的計算器上的第一篇文章,所以我提前道歉,如果這不是提交關於此問題的詳細信息,接受的方式...

我已經與遷移模塊周圍的絆腳石在過去的幾天裏,我正在尋找一種在Drupal 7中做到這一點的方法。我想在我想使用的XML字段中使用以逗號分隔的分類標識列表,但是我發現每個例子都是從外部類中檢索的,或者來自數據庫源。

無論如何,通過試驗和錯誤,我發現你可以在遷移類中使用一個字段,而不是引用外部術語遷移類。

$this->addFieldMapping('field_article_type', 'category_id') 
    ->arguments(array('source_type' => 'tid')) 
    ->xpath('/article/category_id') 
    ->separator(','); 
0

查看分類學csv導入模塊http://drupal.org/project/taxonomy_csv。 它很容易使用,並做了它應該和更多。 我最終只使用migrate模塊來導入gNodes,並將此模塊用於分類。很高興使用。