Функция content_format() и CCK imagefield + imagecache

Главные вкладки

Аватар пользователя Viacheslav Viacheslav 31 октября 2008 в 11:49

Не могу победить функцию 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], 'review_thumb_200_200_default')

Но почему-то так не работает!

Вызов без указания форматтера content_format('field_screen', $field_screen[0]) выводит поле field_screen используя форматтер default для filefield. Визуально это выглядит как ссылка на файл картинки с соответствующей иконкой.
Форматтеры начинающиеся с image_ так же работают.

Кто-нибудь сталкивался с подобной проблемой вывода обработанных модулем imagecache картинок? Как-то решили?

Для полноты картины, список форматтеров для поля field_screen:

Array
(
    [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]

Комментарии

Аватар пользователя Viacheslav Viacheslav 16 июля 2009 в 14:06

Более полугода назад сталкивался с этой проблемой. Тогда оставил всё в следующем варианте: $node->content['field_somefield']['view']

Сейчас эта задача всплыла опять. Может кто-то решил её?

Аватар пользователя rashaverak rashaverak 23 декабря 2009 в 13:38

Не очень понял, что нужно сделать?
Вывести картинку что-ли?

Может это использовать:

<?phpprint theme('imagecache', $preset, $image['filepath'], $alt, $title,  $attributes); ?>

Аватар пользователя ion ion 13 августа 2011 в 4:22

http://drupalcontrib.org/api/drupal/contributions--cck--content.module/f...

$c="field_questionnaire_question"; // искомое машинное название cck поля
$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 строки соответственно

Аватар пользователя ion ion 13 августа 2011 в 4:29

«Ситуация следующая:
Есть ImageCache пресет: review_thumb_200_200
Есть поле типа imagefield: field_screen»

по поводу причины вашей ошибки полагаю за 2 года догадались, что использовали в названии шаблона вывода контента (input_format) названия пресета imagecache - это 2 большие разницы.