it-swarm.dev

노드 참조 nid를 사용하여 이미지 필드 파일 경로에 대한 토큰 작성

Drupal 7 개의 토큰에는 필드가 지원되지 않기 때문에 이미지 필드 파일 경로에서 토큰을 대체하는 코드를 작성하는 방법은 무엇입니까?

EDIT : 우선 Node 참조 URL 위젯을 사용하므로 참조 된 노드의 NID가 양식에로드됩니다. 링크가 참조 된 노드에서 클릭 된 경우 배열.

Token_replace ()가 호출 될 때까지 노드에 대한 정보가 없기 때문에 토큰 모듈에 전달할 정보를로드 할 컨텍스트가 없다는 것을 알고 있습니다. 이것은 참조 된 노드의 NID가 양식에 추가되기 전입니다.

hook_form_FORM_ID_form_alter()을 사용하여 파일 경로를 추가하면 작동하지만 그다지 안전하지는 않습니다. 사용자는 Node 참조 URL 위젯을 사용하여 페이지에 액세스하지 않을 수 있습니다.이 경우 이미지 경로가 NID에 대해 알 수있는 시점에 노드가 참조로 저장되는 경우 그리고 노드가 편집되면 노드는 생성 된 경로를 변경하여 참조 된 노드가 장소를 엉망으로 만드는 것을 알게됩니다.

다음은 매우 안전하지 않은 간단한 코드입니다. 더 나은 솔루션은 신경 쓰지 않을 것입니다.

업데이트 :

참조 된 노드의 URL이 URL에 없으면 노드 참조 URL 위젯을 찾을 수없는 페이지를 반환하도록 설정할 수 있습니다.이 기능은 사용자가 노드를 만들 수만 있기 때문에 조금 더 안전합니다. 참조 된 페이지에서 노드 작성 링크를 클릭 한 경우.

/**
*  Implements hook_form_FORM_ID_form_alter\
*/
function HOOK_form_photo_node_form_alter(&$form, &$form_state) {
  $lang = $form['language']['#value'];
  $form['field_business_photo'][$lang][0]['#upload_location'] = 'public://photo/' . $form['field_reference_business'][$lang][0]['nid']['#default_value'];
}
6
Adam S

답은 Fieldfield Paths 모듈을 사용하는 것입니다.

FileField Paths 모듈은 node 토큰을 사용하는 기능을 추가하여 Drupals 코어 업로드 모듈, FileField 모듈 및 기타 여러 파일 업로드 모듈의 기본 기능을 확장합니다. 대상 경로 및 파일 이름.

1
Adam S