PluginProbe ʕ •ᴥ•ʔ
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid / 4.2.0
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid v4.2.0
7.9.3 7.9.2 trunk 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.2.0 4.2.1 4.2.2 4.2.3 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 6.0.0 7.0.0 7.0.1 7.0.2 7.1.0 7.2.0 7.2.1 7.2.10 7.2.11 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 7.2.9 7.3.0 7.3.1 7.4.0 7.4.1 7.4.2 7.4.3 7.5.0 7.6.0 7.6.1 7.7.0 7.7.1 7.7.10 7.7.11 7.7.12 7.7.13 7.7.14 7.7.15 7.7.16 7.7.17 7.7.18 7.7.19 7.7.2 7.7.20 7.7.21 7.7.22 7.7.3 7.7.4 7.7.5 7.7.6 7.7.7 7.7.8 7.7.9 7.8.0 7.8.1 7.8.2 7.8.3 7.8.4 7.8.5 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1
the-post-grid / app / Widgets / elementor / widgets / grid-hover-layout.php
the-post-grid / app / Widgets / elementor / widgets Last commit date
default.php 3 years ago grid-hover-layout-archive.php 3 years ago grid-hover-layout.php 3 years ago grid-layout-archive.php 3 years ago grid-layout.php 3 years ago list-layout-archive.php 3 years ago list-layout.php 3 years ago related-post.php 3 years ago slider-layout-archive.php 3 years ago slider-layout.php 3 years ago
grid-hover-layout.php
295 lines
1 <?php
2 /**
3 * Grid Hover Layout Class
4 *
5 * @package RT_TPG
6 */
7
8 use RT\ThePostGrid\Helpers\Fns;
9
10 // Do not allow directly accessing this file.
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit( 'This script cannot be accessed directly.' );
13 }
14
15 /**
16 * Grid Hover Layout Class
17 */
18 class TPGGridHoverLayout extends Custom_Widget_Base {
19
20 /**
21 * GridLayout constructor.
22 *
23 * @param array $data
24 * @param null $args
25 *
26 * @throws \Exception
27 */
28
29 public function __construct( $data = [], $args = null ) {
30 parent::__construct( $data, $args );
31 $this->prefix = 'grid_hover';
32 $this->tpg_name = esc_html__( 'TPG - Grid Hover Layout', 'the-post-grid' );
33 $this->tpg_base = 'tpg-grid-hover-layout';
34 $this->tpg_icon = 'eicon-image-rollover tpg-grid-icon'; // .tpg-grid-icon class for just style
35 }
36
37 public function get_script_depends() {
38 $scripts = [];
39 array_push( $scripts, 'imagesloaded' );
40 array_push( $scripts, 'rt-tpg' );
41 array_push( $scripts, 'rt-tpg-el-pro' );
42
43 return $scripts;
44 }
45
46 public function get_style_depends() {
47 $settings = get_option( rtTPG()->options['settings'] );
48 $style = [];
49
50 if ( isset( $settings['tpg_load_script'] ) ) {
51 array_push( $style, 'rt-fontawsome' );
52 array_push( $style, 'rt-tpg-elementor' );
53 }
54
55 return $style;
56 }
57
58 protected function register_controls() {
59 /**
60 * Content Tab
61 * ===========
62 */
63
64 // Layout.
65 rtTPGElementorHelper::grid_layouts( $this );
66
67 // Query.
68 rtTPGElementorHelper::query( $this );
69
70 // Filter Settings.
71 rtTPGElementorHelper::filter_settings( $this );
72
73 // Pagination Settings.
74 rtTPGElementorHelper::pagination_settings( $this );
75
76 // Links.
77 rtTPGElementorHelper::links( $this );
78
79 /**
80 * Settings Tab
81 * =============
82 */
83
84 // Field Selection.
85 rtTPGElementorHelper::field_selection( $this );
86
87 // Section Title Settings.
88 rtTPGElementorHelper::section_title_settings( $this );
89
90 // Title Settings.
91 rtTPGElementorHelper::post_title_settings( $this );
92
93 // Thumbnail Settings.
94 rtTPGElementorHelper::post_thumbnail_settings( $this );
95
96 // Excerpt Settings.
97 rtTPGElementorHelper::post_excerpt_settings( $this );
98
99 // Meta Settings.
100 rtTPGElementorHelper::post_meta_settings( $this );
101
102 // Advanced Custom Field ACF Settings.
103 rtTPGElementorHelper::tpg_acf_settings( $this );
104
105 // Readmore Settings.
106 rtTPGElementorHelper::post_readmore_settings( $this );
107
108 /**
109 * Style Tab
110 * ==========
111 */
112
113 // Section Title Style.
114 rtTPGElementorHelper::sectionTitle( $this );
115
116 // Title Style.
117 rtTPGElementorHelper::titleStyle( $this );
118
119 // Thumbnail Style.
120 rtTPGElementorHelper::thumbnailStyle( $this );
121
122 // Content Style.
123 rtTPGElementorHelper::contentStyle( $this );
124
125 // Meta Info Style.
126 rtTPGElementorHelper::metaInfoStyle( $this );
127
128 // Box Style.
129 rtTPGElementorHelper::socialShareStyle( $this );
130
131 // ACF Style.
132 rtTPGElementorHelper::tpg_acf_style( $this );
133
134 // Read More Style.
135 rtTPGElementorHelper::readmoreStyle( $this );
136
137 // Link Style.
138 rtTPGElementorHelper::linkStyle( $this );
139
140 // Box Style.
141 rtTPGElementorHelper::frontEndFilter( $this );
142
143 // Pagination - Loadmore Style.
144 rtTPGElementorHelper::paginationStyle( $this );
145
146 // Box Style.
147 rtTPGElementorHelper::articlBoxSettings( $this );
148
149 // Promotions Style.
150 rtTPGElementorHelper::promotions( $this );
151 }
152
153 protected function render() {
154 $data = $this->get_settings();
155 $_prefix = $this->prefix;
156
157 if ( ! rtTPG()->hasPro() && ! in_array(
158 $data[ $_prefix . '_layout' ],
159 [
160 'grid_hover-layout1',
161 'grid_hover-layout2',
162 'grid_hover-layout3',
163 ]
164 ) ) {
165 $data[ $_prefix . '_layout' ] = 'grid_hover-layout1';
166 }
167
168 if ( rtTPG()->hasPro() && ( 'popup' == $data['post_link_type'] || 'multi_popup' == $data['post_link_type'] ) ) {
169 wp_enqueue_style( 'rt-magnific-popup' );
170 wp_enqueue_script( 'rt-scrollbar' );
171 wp_enqueue_script( 'rt-magnific-popup' );
172 add_action( 'wp_footer', [ $this, 'get_modal_markup' ] );
173 }
174
175 if ( rtTPG()->hasPro() && 'button' == $data['filter_type'] && 'carousel' == $data['filter_btn_style'] ) {
176 wp_enqueue_script( 'swiper' );
177 }
178
179 if ( 'show' == $data['show_pagination'] && 'pagination_ajax' == $data['pagination_type'] ) {
180 wp_enqueue_script( 'rt-pagination' );
181 }
182
183 // Query.
184 $query_args = rtTPGElementorQuery::post_query( $data, $_prefix );
185 $query = new WP_Query( $query_args );
186 $rand = wp_rand();
187 $layoutID = 'rt-tpg-container-' . $rand;
188 $posts_per_page = $data['display_per_page'] ? $data['display_per_page'] : $data['post_limit'];
189
190 // TODO: Get Post Data for render post.
191 $post_data = $this->get_render_data_set( $data, $query->max_num_pages, $posts_per_page );
192
193 // Post type render.
194 $post_types = Fns::get_post_types();
195 foreach ( $post_types as $post_type => $label ) {
196 $_taxonomies = get_object_taxonomies( $post_type, 'object' );
197
198 if ( empty( $_taxonomies ) ) {
199 continue;
200 }
201
202 $post_data[ $data['post_type'] . '_taxonomy' ] = isset( $data[ $data['post_type'] . '_taxonomy' ] ) ? $data[ $data['post_type'] . '_taxonomy' ] : '';
203 $post_data[ $data['post_type'] . '_tags' ] = isset( $data[ $data['post_type'] . '_tags' ] ) ? $data[ $data['post_type'] . '_tags' ] : '';
204 }
205 $template_path = $this->tpg_template_path( $post_data );
206 $_layout = $data[ $_prefix . '_layout' ];
207 ?>
208
209 <div class="rt-container-fluid rt-tpg-container tpg-el-main-wrapper <?php echo esc_attr( $_layout . '-main' ); ?>"
210 id="<?php echo esc_attr( $layoutID ); ?>"
211 data-layout="<?php echo esc_attr( $data[ $_prefix . '_layout' ] ); ?>"
212 data-sc-id="elementor"
213 data-el-settings='<?php Fns::is_filter_enable( $data ) ? Fns::print_html( htmlspecialchars( wp_json_encode( $post_data ) ), true ) : ''; ?>'
214 data-el-query='<?php Fns::is_filter_enable( $data ) ? Fns::print_html( htmlspecialchars( wp_json_encode( $query_args ) ), true ) : ''; ?>'
215 data-el-path='<?php echo Fns::is_filter_enable( $data ) ? esc_attr( $template_path ) : ''; ?>'
216 >
217 <?php
218 $settings = get_option( rtTPG()->options['settings'] );
219 if ( isset( $settings['tpg_load_script'] ) && isset( $settings['tpg_enable_preloader'] ) ) {
220 ?>
221 <div id="bottom-script-loader" class="bottom-script-loader">
222 <div class="rt-ball-clip-rotate">
223 <div></div>
224 </div>
225 </div>
226 <?php
227 }
228
229 $wrapper_class = [];
230 if ( in_array(
231 $_layout,
232 [
233 'grid_hover-layout6',
234 'grid_hover-layout7',
235 'grid_hover-layout8',
236 'grid_hover-layout9',
237 'grid_hover-layout10',
238 'grid_hover-layout11',
239 'grid_hover-layout5-2',
240 'grid_hover-layout6-2',
241 'grid_hover-layout7-2',
242 'grid_hover-layout9-2',
243 ]
244 ) ) {
245 $wrapper_class[] = 'grid_hover-layout5';
246 }
247 $wrapper_class[] = str_replace( '-2', null, $_layout );
248 $wrapper_class[] = 'tpg-even grid-behaviour';
249 $wrapper_class[] = $_prefix . '_layout_wrapper';
250
251 // section title settings.
252 $is_carousel = '';
253
254 if ( rtTPG()->hasPro() && 'carousel' == $data['filter_btn_style'] && 'button' == $data['filter_type'] ) {
255 $is_carousel = 'carousel';
256 }
257
258 echo "<div class='tpg-header-wrapper {$is_carousel}'>";
259 $this->get_section_title( $data );
260 Fns::print_html( $this->get_frontend_filter_markup( $data ) );
261 echo '</div>';
262 ?>
263
264 <div data-title="Loading ..."
265 class="rt-row rt-content-loader <?php echo esc_attr( implode( ' ', $wrapper_class ) ); ?>">
266 <?php
267 if ( $query->have_posts() ) {
268 $pCount = 1;
269
270 while ( $query->have_posts() ) {
271 $query->the_post();
272 set_query_var( 'tpg_post_count', $pCount );
273 set_query_var( 'tpg_total_posts', $query->post_count );
274 $this->tpg_template( $post_data );
275 $pCount ++;
276 }
277 } else {
278 if ( $data['no_posts_found_text'] ) {
279 printf( "<div class='no_posts_found_text'>%s</div>", esc_html( $data['no_posts_found_text'] ) );
280 } else {
281 printf( "<div class='no_posts_found_text'>%s</div>", esc_html__( 'No post found', 'the-post-grid' ) );
282 }
283 }
284 wp_reset_postdata();
285 ?>
286 </div>
287
288 <?php Fns::print_html( $this->get_pagination_markup( $query, $data ) ); ?>
289 </div>
290 <?php
291 do_action( 'tpg_elementor_script' );
292 }
293
294 }
295