Не могу победить функцию content_format() для вывода поля imagefield.
Для начала хочу сказать, что вариант прямого вывода $node->content['field_somefield']['view'] работает, но не устраивает, т.к. не универсально. К тому же разработчики рекомендуют использовать функцию content_format().
Ситуация следующая:
Есть ImageCache пресет: review_thumb_200_200
Есть поле типа imagefield: field_screen
Для стандартного вывода поля используется review_thumb_200_200 image. В таком виде всё работает, поле оборачивается в нужные div'ы и всё ОК.
По идее к таком же результату должен приводить вызов функции в виде:
Но почему-то так не работает!
Вызов без указания форматтера content_format('field_screen', $field_screen[0]) выводит поле field_screen используя форматтер default для filefield. Визуально это выглядит как ссылка на файл картинки с соответствующей иконкой.
Форматтеры начинающиеся с image_ так же работают.
Кто-нибудь сталкивался с подобной проблемой вывода обработанных модулем imagecache картинок? Как-то решили?
Для полноты картины, список форматтеров для поля field_screen:
(
[default] => Array
(
[label] => Generic files
[suitability callback] => 1
[field types] => Array
(
[0] => filefield
[1] => image
)
[multiple values] => 1
[description] => Displays all kinds of files with an icon and a linked file description.
[module] => filefield
)
[review_thumb_200_200_default] => Array
(
[label] => review_thumb_200_200 image
[field types] => Array
(
[0] => image
[1] => filefield
)
[module] => imagecache
)
[review_thumb_200_200_linked] => Array
(
[label] => review_thumb_200_200 image linked to node
[field types] => Array
(
[0] => image
[1] => filefield
)
[module] => imagecache
)
[review_thumb_200_200_imagelink] => Array
(
[label] => review_thumb_200_200 image linked to image
[field types] => Array
(
[0] => image
[1] => filefield
)
[module] => imagecache
)
[review_thumb_200_200_path] => Array
(
[label] => review_thumb_200_200 file path
[field types] => Array
(
[0] => image
[1] => filefield
)
[module] => imagecache
)
[review_thumb_200_200_url] => Array
(
[label] => review_thumb_200_200 URL
[field types] => Array
(
[0] => image
[1] => filefield
)
[module] => imagecache
)
[image_plain] => Array
(
[label] => Image
[field types] => Array
(
[0] => image
[1] => filefield
)
[suitability callback] => imagefield_handles_file
[geshifilter-css] => Array ( [0] => modules/acquia/imagefield/imagefield.css ) [description] => Displays image files in their original size. [module] => imagefield ) [image_nodelink] => Array ( [label] => Image linked to node [field types] => Array ( [0] => image [1] => filefield ) [suitability callback] => imagefield_handles_file [css] => Array ( [0] => modules/acquia/imagefield/imagefield.css ) [description] => Displays image files in their original size. [module] => imagefield ) [image_imagelink] => Array ( [label] => Image linked to file [field types] => Array ( [0] => image [1] => filefield ) [suitability callback] => imagefield_handles_file [css] => Array ( [0] => modules/acquia/imagefield/imagefield.css ) [description] => Displays image files in their original size. [module] => imagefield ) [path_plain] => Array ( [label] => Path to file [field types] => Array ( [0] => image [1] => filefield ) [suitability callback] => imagefield_handles_file [css] => Array ( [0] => modules/acquia/imagefield/imagefield.css ) [description] => Displays image files in their original size. [module] => imagefield ) [url_plain] => Array ( [label] => URL to file [field types] => Array ( [0] => image [1] => filefield ) [suitability callback] => imagefield_handles_file [css] => Array ( [0] => modules/acquia/imagefield/imagefield.css ) [description] => Displays image files in their original size. [module] => imagefield ) )
[/geshifilter-css]
Комментарии
Более полугода назад сталкивался с этой проблемой. Тогда оставил всё в следующем варианте: $node->content['field_somefield']['view']
Сейчас эта задача всплыла опять. Может кто-то решил её?
я в шаблонах вывожу через
<?php print theme('content_field', $node->content['field_poster']['field']);?>
Не очень понял, что нужно сделать?
Вывести картинку что-ли?
Может это использовать:
<?phpprint theme('imagecache', $preset, $image['filepath'], $alt, $title, $attributes); ?>
http://drupalcontrib.org/api/drupal/contributions--cck--content.module/f...
$f=node_load("4"); // грузим контент
$field = content_fields($c, $f->type); // поле
dsm(content_view_field($field, $f)); // рендер поля со всеми вытекающими и по правилам отображения cck, хорошо применять для вывода в нетемизированный контент.
dsm(content_format($c, $f->field_questionnaire_question[0], $formatter_name = 'default', $f)); // тело со всеми опциями
dsm(content_format($c, $f->field_questionnaire_question[0])); // опускаем контекст и формат
выполните, изменив первые 2 строки соответственно
«Ситуация следующая:
Есть ImageCache пресет: review_thumb_200_200
Есть поле типа imagefield: field_screen»
по поводу причины вашей ошибки полагаю за 2 года догадались, что использовали в названии шаблона вывода контента (input_format) названия пресета imagecache - это 2 большие разницы.