PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.0
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / packages / blocks / Blocks / ProductCollectionImage / Block.php
surecart / packages / blocks / Blocks / ProductCollectionImage Last commit date
Block.php 2 years ago block.json 2 years ago style.css 2 years ago
Block.php
81 lines
1 <?php
2
3 namespace SureCartBlocks\Blocks\ProductCollectionImage;
4
5 use SureCartBlocks\Blocks\BaseBlock;
6
7 /**
8 * Product Collection Image Block
9 */
10 class Block extends BaseBlock {
11
12 /**
13 * Get image styles.
14 *
15 * @param array $attributes
16 *
17 * @return string
18 */
19 private function getImageStyle( $attributes ): string {
20 $style = '';
21
22 // Aspect ratio with a height set needs to override the default width/height.
23 if ( ! empty( $attributes['aspectRatio'] ) ) {
24 $style .= 'width:100%;height:100%;';
25 } elseif ( ! empty( $attributes['height'] ) ) {
26 $style .= "height:{$attributes['height']};";
27 }
28
29 if ( ! empty( $attributes['scale'] ) ) {
30 $style .= "object-fit:{$attributes['scale']};";
31 }
32
33 return $style;
34 }
35
36 /**
37 * Render the block
38 *
39 * @param array $attributes Block attributes.
40 * @param string $content Post content.
41 *
42 * @return string
43 */
44 public function render( $attributes, $content ) {
45 $collection = get_query_var( 'surecart_current_collection' );
46 if ( empty( $collection ) || empty( $collection->image ) ) {
47 return '';
48 }
49
50 // Wrapper attributes.
51 $aspect_ratio = ! empty( $attributes['aspectRatio'] ) ? esc_attr( safecss_filter_attr( 'aspect-ratio:' . $attributes['aspectRatio'] ) ) . ';' : '';
52 $width = ! empty( $attributes['width'] ) ? esc_attr( safecss_filter_attr( 'width:' . $attributes['width'] ) ) . ';' : '';
53 $height = ! empty( $attributes['height'] ) ? esc_attr( safecss_filter_attr( 'height:' . $attributes['height'] ) ) . ';' : '';
54
55 if ( ! $height && ! $width && ! $aspect_ratio ) {
56 $wrapper_attributes = get_block_wrapper_attributes();
57 } else {
58 $wrapper_attributes = get_block_wrapper_attributes( [ 'style' => $aspect_ratio . $width . $height ] );
59 }
60
61 // if % is used, we need to set the cdn_image_size = 0, so that it will use the full size image.
62 if ( ! empty( $attributes['width'] ) ) {
63 $cdn_image_size = strpos( $attributes['width'], '%' ) !== false ? 0 : $attributes['width'] ?? 0;
64 } else {
65 $cdn_image_size = 0;
66 }
67
68 $collection_image = sprintf(
69 '<img src="%1$s" alt="%2$s" style="%3$s" srcset="%4$s" width="%5$s" height="%6$s" />',
70 esc_url( $collection->getImageUrl( $cdn_image_size ) ),
71 esc_attr( $collection->name ?? '' ),
72 $this->getImageStyle( $attributes ),
73 $collection->getImageUrl( $cdn_image_size, 'dpr=2' ) . ' 2x',
74 ! empty( $attributes['width'] ) ? (int) $attributes['width'] : null,
75 ! empty( $attributes['height'] ) ? (int) $attributes['height'] : null
76 );
77
78 return "<figure {$wrapper_attributes}>{$collection_image}</figure>";
79 }
80 }
81