마이그레이션 모듈로 작성된 노드에 대한 경로 자동 비활성화


14

마이그레이션 을 사용하여 많은 노드를 가져오고 마이그레이션 중에 경로 별명을 설정하고 싶습니다. 경로 별칭을 다음과 같이 올바르게 가져올 수 있습니다.

$this->addFieldMapping('path', 'url_alias');

가져온 노드를 볼 때 path필드에 올바른 경로가 표시 되지만 Generate automatic URL alias확인란이 계속 선택되어 설정이 무시됩니다.

마이그레이션 중에 노드에서 해당 설정을 비활성화하려면 어떻게합니까?

답변:


10

기본적으로 $node오브젝트 pathauto를 저장할 때 false 로 설정 하여 오브젝트를 전달 해야합니다 .

마이그레이션 수업에서 :

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}

나는 그것을 시도했지만 Generate automatic URL alias여전히 검사됩니다.
Kenny Wyland

그러나 PrepareRow () 대신 Prepare () 메서드에서 제안을 시도했지만 효과가있었습니다! 게시물을 수정하면 답변으로 수락합니다. 감사!
Kenny Wyland

편집-처음으로 잘못된 방법을 얻었습니다 :)
jhedstrom

8
$this->addFieldMapping('pathauto')->defaultValue(0);

나를 위해 작동합니다. Pathauto : 앨리어싱 수행 (마이그레이션 중에 별칭 생성을 방지하기 위해 0으로 설정) 자세한 설명은 'drush ma'+ 클래스 이름을 참조하십시오.


0

가끔 들어오는 경로 별칭이있을 수는 없지만 별칭을 설정하지 않은 경우에만 pathauto를 트리거하는 방법은 다음과 같습니다.

먼저, 생성자에서 모두지도 pathpathauto:

$this->addFieldMapping('path', 'path');
$this->addFieldMapping('pathauto', 'pathauto');

그런 다음에서 값 이 들어오는 지 여부에 따라 속성을 ::prepareRow()설정하십시오 .pathautopath

public function prepareRow($row) {
  parent::prepareRow($row);

  if (!empty($row->path)) {
    $row->pathauto = 0;
  }
  else {
    $row->pathauto = 1;
  }

}

결과적으로 별칭에 사용될 경로를 명시 적으로 전달하면 Pathauto를 사용하지 않으면 Pathauto가 시작됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.