如何准备在 Drupal 中显示的字段

How to prepare field for display in Drupal

我在图片模块和列表加载方面遇到问题。所以我的结构是包含一些字段的内容类型,其中之一是图像设置以显示图片。

在另一个页面上,我不想显示该内容类型的 2 个对象。所以我 select 它来自数据库和预处理字段。对于普通字段,没关系,因为我只需要它们的值,但是对于图片,我需要所有其他数据,如断点、主题。 基本上对于图像我得到了:

array (size=1)
  'und' => 
    array (size=1)
      0 => 
        array (size=18)
          'fid' => string '3023' (length=4)
          'uid' => string '1' (length=1)
          'filename' => string 'profile_picture.jpg' (length=19)
          'uri' => string 'public://profile_picture.jpg' (length=28)
          'filemime' => string 'image/jpeg' (length=10)
          'filesize' => string '325835' (length=6)
          'status' => string '1' (length=1)
          'timestamp' => string '1421745203' (length=10)
          'type' => string 'image' (length=5)
          'uuid' => string '59484070-9a95-42fb-8b2a-594e5d3a7483' (length=36)
          'field_file_image_alt_text' => 
            array (size=0)
              empty
          'field_file_image_title_text' => 
            array (size=0)
              empty
          'rdf_mapping' => 
            array (size=0)
              empty
          'metadata' => 
            array (size=2)
              'height' => int 500
              'width' => int 400
          'alt' => string '' (length=0)
          'title' => string '' (length=0)
          'width' => string '400' (length=3)
          'height' => string '500' (length=3)

我需要:

'#theme' => string 'picture_formatter' (length=17)
  '#attached' => 
    array (size=1)
      'library' => 
        array (size=3)
          0 => 
            array (size=2)
              0 => string 'picture' (length=7)
              1 => string 'picturefill_head' (length=16)
          1 => 
            array (size=2)
              0 => string 'picture' (length=7)
              1 => string 'picturefill' (length=11)
          2 => 
            array (size=2)
              0 => string 'picture' (length=7)
              1 => string 'picture.ajax' (length=12)
  '#item' => 
    array (size=18)
      'fid' => string '3023' (length=4)
      'uid' => string '1' (length=1)
      'filename' => string 'profile_picture.jpg' (length=19)
      'uri' => string 'public://profile_picture.jpg' (length=28)
      'filemime' => string 'image/jpeg' (length=10)
      'filesize' => string '325835' (length=6)
      'status' => string '1' (length=1)
      'timestamp' => string '1421745203' (length=10)
      'type' => string 'image' (length=5)
      'uuid' => string '59484070-9a95-42fb-8b2a-594e5d3a7483' (length=36)
      'field_file_image_alt_text' => 
        array (size=0)
          empty
      'field_file_image_title_text' => 
        array (size=0)
          empty
      'rdf_mapping' => 
        array (size=0)
          empty
      'metadata' => 
        array (size=2)
          'height' => int 500
          'width' => int 400
      'alt' => string '' (length=0)
      'title' => string '' (length=0)
      'width' => string '400' (length=3)
      'height' => string '500' (length=3)
  '#image_style' => string 'large_custom_user_mobile_1x' (length=27)
  '#breakpoints' => 
    array (size=5)
      'custom.user.ultra_wide' => 
        array (size=1)
          '1x' => 
            array (size=2)
              'mapping_type' => string 'image_style' (length=11)
              'image_style' => string 'large_custom_user_ultra_wide_1x' (length=31)
      'custom.user.wide' => 
        array (size=1)
          '1x' => 
            array (size=2)
              'mapping_type' => string 'image_style' (length=11)
              'image_style' => string 'large_custom_user_wide_1x' (length=25)
      'custom.user.normal' => 
        array (size=1)
          '1x' => 
            array (size=2)
              'mapping_type' => string 'image_style' (length=11)
              'image_style' => string 'large_custom_user_normal_1x' (length=27)
      'custom.user.narrow' => 
        array (size=1)
          '1x' => 
            array (size=2)
              'mapping_type' => string 'image_style' (length=11)
              'image_style' => string 'large_custom_user_narrow_1x' (length=27)
      'custom.user.mobile' => 
        array (size=1)
          '1x' => 
            array (size=2)
              'mapping_type' => string 'image_style' (length=11)
              'image_style' => string 'large_custom_user_mobile_1x' (length=27)
  '#path' => string '' (length=0)
  '#colorbox_group' => 
    array (size=0)
      empty
  '#colorbox_image_style' => string '' (length=0)

所以问题是如何准备场地

谢谢!

我认为您要搜索的是 field_view_field(). This function will invoke internally hook_field_formatter_view(). The picture module implements this hook,根据 $display 参数,它将在内部调用提供的显示函数之一。

根据您请求的所需输出,您应该将 picture 作为显示参数传递,以便调用 picture_field_formatter_picture_view() 似乎 return 适当的可渲染数组。