2010-12-20 1 views
6

migrate module을 사용하여 여러 소스의 데이터를 새 Drupal 설치로 복사하고 있습니다. 지금까지 필자는 모듈과 함께 제공되는 예제에서 필요한 것을 많이 복제 할 수있었습니다. 저는 현재 새로 생성 된 노드에 용어 나 택 소노 미를 추가하는 일에 매달리고 있습니다. 이 예는 보여줍니다 나는 migrate_example_beer_styles 대상 매핑을 추적했습니다과 그 분류에 대한 machine name 것으로 보인다Drupal Migrate를 사용하여 분류법을 추가하는 방법

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

.

나는 모든 변화와 함께이 동작을 모방 시도했다 내 machine_name 수 있지만 조건이 관련 얻을 수가해서는 안 : 이름,

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

을 그리고 : ID로

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

택 소노 미에 대한 대상 매핑이 machine name 인 것으로 가정합니다.

이 버전의 migrate module은 최근에 릴리스되었으며 웹에서 유용한 예제를 찾지 못했습니다.

답변

1

현재 Google 마이 그 레이션 모듈을 사용하고 있습니다.이 시점에서 설명서가 다소 필요합니다. :)

어휘의 'machine name'은 어휘 테이블의 'module'필드에 나열됩니다. 그 값을 사용해보십시오. ID가 아니라 매핑에 텍스트를 공급해야한다는 점에 유의하십시오.

+1

내가 추천 한 해결책을 찾지 못했습니다. 나는 기계 친숙한 이름 대신 어휘 이름 (정확한 경우가 필요함)을 사용했습니다. 또한 id보다는 텍스트에 대한 매핑이 작동합니다. – labue

13

이 질문은 여전히 ​​일부 의견을 얻고있는 것 같아서, 내가 찾은 다른 것을 추가 할 것이라고 생각했습니다. 허용 대답이 작동하는 동안, 당신은 ID에 Vocabs에 매핑 할 수 있습니다

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

->separator(',')

소스 ID의 구분 된 문자열을 전달에 사용됩니다. 분명히, 값의 배열을 매핑하는 경우에는 사용하지 마십시오.

+0

나는 이민자들에게 단순히 정보를 전하기 위해 노력하고 있었고,이 문제를 발견 할 때까지 왜 그것이 작동하지 않는지 알 수 없었다. 이제 알았어! – geerlingguy

+1

이 코드는 최신 버전의 Migrate 모듈과 함께 경고를 발행한다는 점을 지적하고 싶습니다. ID에 대한지도 Vocabs에 올바른 방법은 다음과 같습니다 '$ this-> addFieldMapping ('정확한 대소 문자 구분 Vocab의 이름 : SOURCE_TYPE') -> DEFAULTVALUE ('TID'); 나는 그래서 만약' – bmunslow

+1

확인 (' field_city') 목적지의 분류법 용어 (entityities)와 ('Cities') 소스 테이블의 분류 어휘와 칼럼 ('name')은 어떻게 처리합니까? '$ this-> addFieldMapping ('Cities : source_type') -> defaultValue ('tid'); ' 그 밖의 무엇이 필요합니까? –

1

이 유래 내 첫 번째 게시물, 그래서이이 문제에 관한 자세한 정보를 제출하는 승인 된 방법이 아닌 경우 내가 미리 사과 ...

내가 마이그레이션 모듈로 주위에 걸림돌 봤는데 지난 며칠 동안 Drupal 7에서이 작업을 수행 할 방법을 찾고있었습니다. 필자는 XML 필드에서 쉼표로 구분 된 ID 목록을 사용했지만 사용하고 싶은 모든 예제는 외부 클래스에서 가져 오는 것이 었습니다. 데이터베이스 소스에서.

어쨌든 시행 착오를 통해 외부 용어 마이그레이션 클래스를 참조하는 대신 마이그레이션 클래스 내에서 필드를 사용할 수 있다는 것을 발견했습니다. http://drupal.org/project/taxonomy_csv에서 분류 된 CSV 가져 오기 모듈 밖으로

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

확인합니다. 사용하기 쉬웠으며 더 이상 기대했던대로했습니다. importin gNodes에 대해서만 migrate 모듈을 사용하고이 모듈을 분류에 사용했습니다. 사용하는 것이 즐거웠습니다.