drupal 7 – Creación de un token para la ruta del archivo de campo de imagen con nid de referencia de nodo

Pregunta:

Dado que no hay soporte para campos en los tokens de Drupal 7, ¿cómo creo el código para reemplazar un token en una ruta de archivo de campo de imagen?

EDITAR : Primero, esto es con el widget de URL de referencia de nodo, por lo que el NID del nodo al que se hace referencia se carga en la matriz del formulario siempre que se haya hecho clic en el enlace en el nodo al que se hace referencia.

Me doy cuenta de que no hay ningún contexto para cargar la información y pasarla al módulo del token porque no hay información sobre el nodo en el momento en que se llama a token_replace (). Esto es antes de que se agregue al formulario el NID del nodo al que se hace referencia.

Agregar la ruta del archivo usando hook_form_FORM_ID_form_alter() funciona, pero no es muy seguro. Es posible que el usuario no use el widget de URL de referencia de nodo para acceder a la página, en cuyo caso el nodo se guarda con una referencia mientras que la ruta de la imagen no tuvo acceso en ningún momento para conocer el NID del nodo referenciado. Y, si luego se edita el nodo, cambiará la ruta en la creación, ya que entonces sabrá que el nodo al que se hace referencia hace un desastre en el lugar.

Aquí está el código simple que no es muy seguro. No me importaría una mejor solución.

Actualizar:

Resulta que el widget de URL de referencia del nodo se puede configurar para devolver una página no encontrada si la URL del nodo al que se hace referencia no está en la URL, lo que haría que esta función sea un poco más segura, ya que obliga al usuario a solo poder crear el nodo. si hicieron clic en el enlace crear nodo en la página referenciada.

/**
*  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'];
}

Respuesta:

La respuesta es usar el módulo Fieldfield Paths .

El módulo FileField Paths extiende la funcionalidad predeterminada del módulo de carga central de Drupal, el módulo FileField y muchos otros módulos de carga de archivos al agregar la capacidad de usar tokens de nodo en rutas de destino y nombres de archivo.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım