Drupal 7 Изображение Модуль PHP Вывод

0

Я обновляю свой сайт Drupal 7, чтобы использовать модуль изображения (https://www.drupal.org/project/picture), и в настоящее время число переопределений шаблонов php использует URL-адрес стиля изображения для печати URL-адреса изображения.

print image_style_url($image_style, $img_url);

Как распечатать изображение с форматированием изображения через PHP? Я придумал код ниже, и он близок, я отправляю неверные данные для переменной breakpoints.

$variables = array(
    'width' => 1570,
    'height' => 950,
    'breakpoints' => array("breakpoints.theme.basic2.large"),
    'uri' => 'public://dev_images/map.jpg',
    'style_name' => 'blog_list_breakpoints_theme_basic2_large_1x');
print theme('picture',$variables);

Спасибо!

Теги:
module
drupal
drupal-7

3 ответа

0

Вот что сработало для меня с Picture 7.x-2.13:

$breakpoints = picture_get_mapping_breakpoints(picture_mapping_load('PICTURE_MAPPING'));
// Always use theme(), in case a module or theme as overridden the default theme_picture()
$picture = theme('picture', array(
    'uri'                   => 'IMAGE_URI',
    'breakpoints'           => $breakpoints,
    // Optional stuff
    'lazyload'              => true,
    'lazyload_aspect_ratio' => true,
    // You can also include 'style_name' here if you don't want automatic fallback
));

Замените PICTURE_MAPPING и IMAGE_URI соответствующими строками.

0

Вы можете получить свои контрольные точки и вызвать theme_picture следующим образом:

$breakpoints = picture_get_mapping_breakpoints(picture_mapping_load('megamenu_thumbnails'));

$picture = theme_picture(array(
  'uri' => 'public://dev_images/map.jpg',
  'breakpoints' => $breakpoints,
  'style_name' => 'rectangular_210_170_breakpoints_theme_ab_large_1x',
  'timestamp'   => NULL,
));

print $picture;

В этом примере megamenu_thumbnails - это имя сопоставления изображения, а rectangular_210_170_breakpoints_theme_ab_large_1x - это стиль резервного образа.

Это работает для меня, используя Picture version 7.x-2.13.

0

Это решение для модуля изображения 2.x. Я сам справился с этим и придумал следующее решение. Это будет пример, если каждая точка останова использует стиль, и вы включаете 1x и 2x для каждого стиля.

$variables = array(
    'width' => 1570,
    'height' => 950,
    'breakpoints' => array(
             'breakpoints.theme.basic2.large' => array(
               '1x' => array(
                 'mapping_type' => 'image_style',
                 'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'
                ),
               '2x' => array(
                  'mapping_type' => 'image_style',
                  'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'  
               ),
             ),
             'breakpoints.theme.basic2.medium' => array(
               '1x' => array(
                 'mapping_type' => 'image_style',
                 'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'
                ),
               '2x' => array(
                  'mapping_type' => 'image_style',
                  'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'  
               ),
             ),
             'breakpoints.theme.basic2.smalltablet' => array(
               '1x' => array(
                 'mapping_type' => 'image_style',
                 'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'
                ),
               '2x' => array(
                  'mapping_type' => 'image_style',
                  'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'  
               ),
             ),
             'breakpoints.theme.basic2.small' => array(
               '1x' => array(
                 'mapping_type' => 'image_style',
                 'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'
                ),
               '2x' => array(
                  'mapping_type' => 'image_style',
                  'image_style' => 'blog_list_breakpoints_theme_basic2_medium_1x'  
               ),
             ),


       ),
    'uri' => 'public://dev_images/map.jpg',
    'style_name' => 'blog_list_breakpoints_theme_basic2_large_1x'



);
  print theme('picture',$variables);

Для функции изображения темы требуется uri, имя стиля (для стиля обратного изображения) и массив точек останова. Ширины и высоты изображения кажутся необязательными. Массив точек останова должен быть отформатирован следующим образом:

array(
 breakpoint_name => array(
   multiplier => array(
     mapping_type => _none|sizes|image_style,
     image_style => image_style_name,
     sizes => '(min-width: 700px) 700px, 100vw',
     sizes_image_styles => array(
       thumbnail => thumbnail,
       medium => medium,
       large => large,
     ),
   ),
 ),


  );

Вы можете видеть, как это было применено в моей переменной переменных. Я удалил массивы размеров из своего кода, так как я использую стили изображений для каждой точки останова.

  • 0
    Это означает, что вы должны повторно объявить все контрольные точки? Разве вы не можете просто использовать значения группы точек останова, определенные в теме?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню