Путь к файлу вложения Drupal (FileField) - PullRequest
2 голосов
/ 09 сентября 2010

Какая функция в Drupal получает путь к вложенному файлу?

Редактировать: вложения, предоставляемые модулем загрузки в системном разделе. Но так как вы упомянули, может быть другой способ обойти это. Возможно, мне удастся достичь поставленных целей с помощью модуля FileField, поэтому, если бы вы могли рассказать мне, как получить прямую ссылку на файл, загруженный модулем FileField, это также может быть очень полезно.

Редактировать 2: Хорошо, я начну с моей главной и конечной цели:

Это изображение, связывающее файл, видимостью которого я мог бы управлять с помощью модуля CCK.

Я делаю это шаг за шагом. Итак, теперь я написал код, который генерирует необходимое изображение, и добавил это изображение в тизер одного из типов контента. Я нашел способ деформировать свое изображение в теге и выкопал простой URL-адрес вложения. Поэтому мой следующий шаг - перейти от простого вложения загрузки к тому, что было добавлено FileFields, и из странного HTML-шага во всем документе PHP в прекрасно управляемое поле CCK.

  • Как получить путь к файлу загруженного файла FileFields?
  • Несколько простых и в то же время богатых учебников по созданию пользовательских полей для модуля CCK.

Ответы [ 3 ]

2 голосов
/ 10 сентября 2010

Если вы знаете, как получить объект $node для узла, содержащего вложение файла, это очень просто:


Загрузка (ядро)

$file = upload_load($node);
echo $file[1]->filepath;

Где 1 - индекс файла. Загрузка может позволить вам загрузить более одного файла, поэтому файл 2 будет иметь индекс 2 и так далее. Если есть только один файл, он всегда будет 1.


FileField

echo $node->field_fieldname[0]['filepath'];

Где field_filename - это короткое имя, которое вы использовали для поля, а 0 - индекс поля. Поля CCK позволяют иметь несколько значений в одном поле, поэтому 0 будет первым, 1 будет вторым и т. Д. Если у вас есть только одно значение, оно всегда будет 0.

Примечание: если вы хотите получить визуализированный вывод FileField с использованием его форматеров, вы можете просто использовать $field_fieldname в своем шаблоне узла или если вы хотите сохранить визуализированный вывод, вы можете Применение:

echo content_format('field_fieldname', $node->field_fieldname[0]);

Upload - это печальный маленький модуль, который был полностью заменен базовой реализацией FileField в Drupal 7. Если у вас есть возможность использовать FileField, вам следует.

0 голосов
/ 10 сентября 2010

Поскольку вы пытаетесь использовать изображения, вы должны использовать модуль http://drupal.org/project/imagefield CCK, чтобы добавить изображения к указанному типу контента. После этого, используя вкладку Поля отображения в конфигурации Тип содержимого , вы можете указать, как будет отображаться изображение (в виде ссылки, изображения, изображения со ссылкой на узел ...) в тизере. и вид тела.

0 голосов
/ 10 сентября 2010

Не отображаются ли прямые ссылки на вложения файлов под загруженным файлом для основного модуля загрузки?

...