PluginProbe
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News / 4.0.7
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News v4.0.7
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 2.3.5 2.3.6 2.4.0 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.15 2.4.16 2.4.17 2.4.18 2.4.19 2.4.2 2.4.20 2.4.21 All 88 releases
post-carousel / blocks / includes / post-grid-two / Post_Grid_Two.php

Post_Grid_Two.php in Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News 4.0.7, at blocks/includes/post-grid-two/Post_Grid_Two.php

129 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Post grid class for Smart Post Show Blocks.
4 *
5 * @package Smart_Post_Show_Pro
6 * @subpackage Smart_Post_Show_Pro/blocks/includes
7 */
8
9 namespace SmartPostShow\Blocks;
10
11 use SmartPostShow\Blocks\Helper;
12
13 use SmartPostShow\Blocks\Block_Base;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Class Post_Grid_Two
21 *
22 * Handles the rendering and properties for the "Post Grid Two" block in Smart Post Show Pro.
23 */
24 class Post_Grid_Two extends Block_Base {
25
26 /**
27 * Set_block_properties
28 *
29 * @return void
30 */
31 protected function set_block_properties() {
32 $this->block_name = 'post-grid-two';
33 $this->scripts = array( 'sp_smart_post_blocks_script_js' );
34 $this->styles = array( 'sp_smart_post_blocks_css', 'sp_smart_post_blocks_social_icons_style', 'sp_smart_post_blocks_google_fonts' );
35 $this->editor_scripts = array( 'sp_smart_post_blocks_index_js' );
36 $this->editor_styles = array( 'sp_smart_post_blocks_editor_style' );
37 $this->keywords = array( 'Smart post', 'Grid', 'Live Filter', 'Pagination', ' Ajax Live Filter' );
38 }
39 /**
40 * Render the block.
41 *
42 * @param array $attributes Block attributes.
43 * @param string $content Block content.
44 * @param array $blocks Inner blocks.
45 *
46 * @return string Rendered block HTML.
47 */
48 public function render_block( $attributes, $content = '', $blocks = array() ) {
49 if ( Helper::is_editor_page() ) {
50 return $content;
51 }
52
53 $attributes['page_id'] = get_the_ID();
54 $sp_user_additional_class = $attributes['additionalCssClass'] ?? '';
55 $sp_block_name = $attributes['blockName'] ?? '';
56 $post_query = isset( $attributes['postQuery'] ) ? (array) json_decode( $attributes['postQuery'] ) : array();
57 $align = $attributes['align'] ?? '';
58
59 unset(
60 $attributes['dynamicCss'],
61 $attributes['fontListsEditPage'],
62 $attributes['fontLists']
63 );
64
65 $unique_id = $attributes['uniqueId'] ?? '';
66 $block_name = $attributes['blockName'] ?? '';
67 $sp_block_id = $attributes['spBlockId'] ?? ''; // Not changeable id.
68 $query_attr = ( ! empty( $attributes['postQuery'] ) && isset( $attributes['postQuery'] ) ) ? (array) json_decode( $attributes['postQuery'] ) : $attributes;
69 $preloader_enable = $attributes['preloaderEnable'] ?? false;
70 $preloader_svg = SP_PC_URL . 'public/assets/img/preloader.svg';
71 $post_not_found = ! empty( $attributes['noResultFoundResult'] ) ? $attributes['noResultFoundResult'] : 'No post found';
72
73 $category_position = $attributes['catTabCategoryPosition'] ?? false;
74
75 $category_position = $category_position ? ' sp-cat-position-' . $category_position : '';
76 $block_location = $attributes['blockLocation'] ?? '';
77 $post_query = $this->get_cached_post_query_result( $query_attr, $unique_id, $sp_block_id );
78 $total_pages = $post_query[1];
79 $post_query = $post_query[0];
80
81 $pagination_type = $attributes['paginationTypeParent'] ?? '';
82 $pagination_position = $attributes['paginationPosition'] ?? 'bottom';
83
84 $pagination_class = 'sp-smart-post-block-with-pagination pagination-' . ( 'navigation' === $pagination_type ? $pagination_position : 'bottom' );
85
86 $align_class = isset( $align ) ? 'align' . $align : '';
87 ob_start();
88 ?>
89 <div class="<?php echo esc_attr( $align_class ); ?>">
90 <div id="<?php echo esc_attr( $unique_id ); ?>" class="sp-smart-post-wrapper sp-smart-<?php echo esc_attr( $block_name . $category_position ); ?> <?php echo esc_attr( $sp_user_additional_class ); ?> <?php echo esc_attr( $pagination_class ); ?>" data-query='<?php echo esc_attr( $attributes['postQuery'] ); ?>' data-blockid="<?php echo esc_attr( $sp_block_id ); ?>" data-pageid="<?php echo esc_attr( $attributes['page_id'] ); ?>" data-location="<?php echo esc_attr( $block_location ); ?>">
91 <div class="sp-smart-post-show-pro-pre-query">
92 <?php
93 if ( empty( $post_query ) ) {
94 Template_Part::no_posts_found_text( $post_not_found );}
95 Template_Part::preloader_front( $preloader_enable, $preloader_svg );
96 ?>
97 </div>
98 <div class="sp-smart-show-pro grid-two-container sp-smart-post-block-wrapper sp-smart-post-background-layout">
99 <div class="sp-smart-post-grid-two-contents sp-smart-post-grid-two">
100 <div class="sp-smart-post-dynamic-grid-contents sp-smart-post-items">
101 <?php
102 Template::post_grid_two( $attributes, $post_query );
103 ?>
104 </div>
105 </div>
106 </div>
107 <?php
108 // Pagination.
109 if ( $attributes['paginationEnable'] && $total_pages > 1 && ! empty( $blocks->inner_blocks ) ) {
110 $pagination_attributes = Template::pagination_attributes( $blocks );
111 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- The HTML output is already properly escaped at the time of generation, so additional escaping is not required here.
112 echo Template_Part::pagination_html( $pagination_attributes, $query_attr, $total_pages, $unique_id );
113 }
114 // Moved modal rendering to footer.
115 add_action(
116 'wp_footer',
117 function () use ( $attributes, $post_query ) {
118 Template_Part::modal_lightbox( $attributes, $post_query );
119 },
120 20
121 );
122 ?>
123 </div>
124 </div>
125 <?php
126 return ob_get_clean();
127 }
128 }
129