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