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 / list-layout-archive.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
list-layout-archive.php
279 lines
1 <?php
2 /**
3 * List Layout Archive 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 * List Layout Archive Class
17 */
18 class TPGListLayoutArchive 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 = 'list';
32 $this->tpg_name = esc_html__( 'TPG - List Layout Archive', 'the-post-grid' );
33 $this->tpg_base = 'tpg-list-layout-archive';
34 $this->tpg_icon = 'eicon-post-list tpg-grid-icon'; // .tpg-grid-icon class for just style
35 $this->tpg_category = $this->tpg_archive_category;
36 }
37
38 public function get_script_depends() {
39 $scripts = [];
40 array_push( $scripts, 'imagesloaded' );
41 array_push( $scripts, 'rt-tpg' );
42 array_push( $scripts, 'rt-tpg-el-pro' );
43
44 return $scripts;
45 }
46
47 public function get_style_depends() {
48 $settings = get_option( rtTPG()->options['settings'] );
49 $style = [];
50
51 if ( isset( $settings['tpg_load_script'] ) ) {
52 array_push( $style, 'rt-fontawsome' );
53 array_push( $style, 'rt-tpg-elementor' );
54 }
55
56 return $style;
57 }
58
59 protected function register_controls() {
60 /**
61 * Content Tabs
62 * ===========
63 */
64
65 // Layout.
66 rtTPGElementorHelper::list_layouts( $this, 'archive' );
67
68 // Query.
69 rtTPGElementorHelper::query_builder( $this );
70
71 // Filter Settings.
72 // rtTPGElementorHelper::filter_settings( $this );
73
74 // Pagination Settings.
75 rtTPGElementorHelper::pagination_settings( $this, 'archive' );
76
77 // Links.
78 rtTPGElementorHelper::links( $this );
79
80 /**
81 * Settings Tabs
82 * =============
83 */
84
85 // Field Selection.
86 rtTPGElementorHelper::field_selection( $this );
87
88 // Section Title Settings.
89 rtTPGElementorHelper::section_title_settings( $this, 'archive' );
90
91 // Title Settings.
92 rtTPGElementorHelper::post_title_settings( $this );
93
94 // Thumbnail Settings.
95 rtTPGElementorHelper::post_thumbnail_settings( $this );
96
97 // Excerpt Settings.
98 rtTPGElementorHelper::post_excerpt_settings( $this );
99
100 // Meta Settings.
101 rtTPGElementorHelper::post_meta_settings( $this );
102
103 // Advanced Custom Field ACF Settings.
104 rtTPGElementorHelper::tpg_acf_settings( $this );
105
106 // Readmore Settings.
107 rtTPGElementorHelper::post_readmore_settings( $this );
108
109 /**
110 * Style Tabs
111 * ===========
112 */
113
114 // Section Title Style.
115 rtTPGElementorHelper::sectionTitle( $this, 'archive' );
116
117 // Title Style.
118 rtTPGElementorHelper::titleStyle( $this );
119
120 // Thumbnail Style.
121 rtTPGElementorHelper::thumbnailStyle( $this );
122
123 // Content Style.
124 rtTPGElementorHelper::contentStyle( $this );
125
126 // Meta Info Style.
127 rtTPGElementorHelper::metaInfoStyle( $this );
128
129 // Social Share Style.
130 rtTPGElementorHelper::socialShareStyle( $this );
131
132 // ACF Style.
133 rtTPGElementorHelper::tpg_acf_style( $this );
134
135 // ReadMore Style.
136 rtTPGElementorHelper::readmoreStyle( $this );
137
138 // Link Style.
139 rtTPGElementorHelper::linkStyle( $this );
140
141 // Pagination - LoadMore Style.
142 rtTPGElementorHelper::paginationStyle( $this );
143
144 // Box Settings.
145 rtTPGElementorHelper::articlBoxSettings( $this );
146
147 // Promotions.
148 rtTPGElementorHelper::promotions( $this );
149 }
150
151
152 protected function render() {
153 $data = $this->get_settings();
154 $_prefix = $this->prefix;
155 $data['post_type'] = 'post';
156
157 if ( ! rtTPG()->hasPro() && ! in_array( $data[ $_prefix . '_layout' ], [ 'list-layout1', 'list-layout2', 'list-layout2-2' ] ) ) {
158 $data[ $_prefix . '_layout' ] = 'list-layout1';
159 }
160 if ( rtTPG()->hasPro() && ( 'popup' == $data['post_link_type'] || 'multi_popup' == $data['post_link_type'] ) ) {
161 wp_enqueue_style( 'rt-magnific-popup' );
162 wp_enqueue_script( 'rt-scrollbar' );
163 wp_enqueue_script( 'rt-magnific-popup' );
164 add_action( 'wp_footer', [ $this, 'get_modal_markup' ] );
165 }
166
167 if ( 'masonry' === $data['list_layout_style'] ) {
168 wp_enqueue_script( 'isotope' );
169 wp_enqueue_script( 'jquery-masonry' );
170 }
171
172 if ( 'show' == $data['show_pagination'] && 'pagination_ajax' == $data['pagination_type'] ) {
173 wp_enqueue_script( 'rt-pagination' );
174 }
175
176 // Query.
177 $query_args = rtTPGElementorQuery::post_query_builder( $data, $_prefix );
178 $query = new WP_Query( $query_args );
179 $rand = wp_rand();
180 $layoutID = 'rt-tpg-container-' . $rand;
181 $posts_per_page = $data['post_limit'];
182
183 /**
184 * TODO: Get Post Data for render post
185 */
186 $post_data = $this->get_render_data_set( $data, $query->max_num_pages, $posts_per_page );
187
188 /**
189 * Post type render
190 */
191 $post_types = Fns::get_post_types();
192 foreach ( $post_types as $post_type => $label ) {
193 $_taxonomies = get_object_taxonomies( $post_type, 'object' );
194
195 if ( empty( $_taxonomies ) ) {
196 continue;
197 }
198
199 $post_data[ $data['post_type'] . '_taxonomy' ] = isset( $data[ $data['post_type'] . '_taxonomy' ] ) ? $data[ $data['post_type'] . '_taxonomy' ] : '';
200 $post_data[ $data['post_type'] . '_tags' ] = isset( $data[ $data['post_type'] . '_tags' ] ) ? $data[ $data['post_type'] . '_tags' ] : '';
201 }
202
203 $template_path = $this->tpg_template_path( $post_data );
204 $_layout = $data[ $_prefix . '_layout' ];
205 $_layout_style = $data[ $_prefix . '_layout_style' ];
206 ?>
207 <div class="rt-container-fluid rt-tpg-container tpg-el-main-wrapper <?php echo esc_attr( $_layout . '-main' ); ?>"
208 data-sc-id="elementor"
209 id="<?php echo esc_attr( $layoutID ); ?>"
210 data-layout="<?php echo esc_attr( $data[ $_prefix . '_layout' ] ); ?>"
211 data-grid-style="<?php echo esc_attr( $data[ $_prefix . '_layout_style' ] ); ?>"
212 data-el-settings='<?php Fns::print_html( htmlspecialchars( wp_json_encode( $post_data ) ), true ); ?>'
213 data-el-query='<?php Fns::print_html( htmlspecialchars( wp_json_encode( $query_args ) ), true ); ?>'
214 data-el-path='<?php echo esc_attr( $template_path ); ?>'
215 >
216 <?php
217 $settings = get_option( rtTPG()->options['settings'] );
218 if ( isset( $settings['tpg_load_script'] ) && isset( $settings['tpg_enable_preloader'] ) ) {
219 ?>
220 <div id="bottom-script-loader" class="bottom-script-loader">
221 <div class="rt-ball-clip-rotate">
222 <div></div>
223 </div>
224 </div>
225 <?php
226 }
227
228 $wrapper_class = [];
229 $wrapper_class[] = str_replace( '-2', null, $_layout );
230 $wrapper_class[] = 'tpg-even list-behaviour';
231 $wrapper_class[] = $_prefix . '-layout-wrapper';
232
233 if ( 'masonry' === $_layout_style && ! in_array( $_layout, [ 'list-layout2', 'list-layout3' ] ) ) {
234 $wrapper_class[] = 'tpg-masonry';
235 }
236
237 // section title settings.
238 echo "<div class='tpg-header-wrapper'>";
239 $this->get_section_title( $data );
240 echo '</div>';
241 ?>
242
243 <div data-title="Loading ..." class="rt-row rt-content-loader <?php echo esc_attr( implode( ' ', $wrapper_class ) ); ?>">
244 <?php
245 if ( $query->have_posts() ) {
246 $pCount = 1;
247
248 while ( $query->have_posts() ) {
249 $query->the_post();
250 set_query_var( 'tpg_post_count', $pCount );
251 set_query_var( 'tpg_total_posts', $query->post_count );
252 $this->tpg_template( $post_data );
253 $pCount ++;
254 }
255 } else {
256 if ( $data['no_posts_found_text'] ) {
257 printf( "<div class='no_posts_found_text'>%s</div>", esc_html( $data['no_posts_found_text'] ) );
258 } else {
259 printf( "<div class='no_posts_found_text'>%s</div>", esc_html__( 'No post found', 'the-post-grid' ) );
260 }
261 }
262 wp_reset_postdata();
263 ?>
264 </div>
265
266 <?php Fns::print_html( $this->get_pagination_markup( $query, $data ) ); ?>
267
268 </div>
269 <?php
270 if ( 'masonry' === $data[ $_prefix . '_layout_style' ] && \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
271 ?>
272 <script>jQuery('.rt-row.rt-content-loader.tpg-masonry').isotope();</script>
273 <?php
274 }
275 do_action( 'tpg_elementor_script' );
276 }
277
278 }
279