Создание маркера для пути к файлу поля изображения с идентификатором nid ссылки на узел


Поскольку в токенах Drupal 7 нет поддержки полей, как мне создать код для замены токена в пути к файлу поля изображения?

РЕДАКТИРОВАТЬ: Во-первых, это связано с виджетом URL-адреса ссылки на узел, поэтому идентификатор NID указанного узла загружается в массив форм, если ссылка была нажата на указанном узле.

Я понимаю, что нет никакого контекста для загрузки информации для передачи в модуль токенов, потому что нет никакой информации об узле к моменту вызова функции token_replace(). Это происходит до того, как NID указанного узла добавляется в форму.

Добавление пути к файлу с помощью hook_form_FORM_ID_form_alter() работает, но это не очень безопасно. Пользователь может не использовать виджет 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'];
}
Author: DeeZone, 2011-05-13

1 answers

Ответ заключается в использовании модуля Пути к полевым полям.

Модуль Путей к файловому полю расширяет функциональные возможности по умолчанию модуля загрузки ядра Drupals, модуля FileField и многих других модулей загрузки файлов, добавляя возможность использовать маркеры узла в путях назначения и именах файлов.

 1
Author: Adam S, 2011-11-12 10:08:59