PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.5.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.5.1
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / views / layouts / base.php

base.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.5.1, at views/layouts/base.php

176 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( $terms_query_args == false ) {
3 return;
4 }
5 $terms = get_terms( apply_filters( 'betterdocs_base_terms_args', $terms_query_args ) );
6 /**
7 * Base Layout Before Wrapper
8 */
9 do_action_ref_array( 'betterdocs_base_layout_wrapper_before', [ & $terms ] );
10 ?>
11
12 <div
13 <?php echo $wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
14 <?php
15 /**
16 * Base Layout Before Inner Wrapper
17 */
18 do_action_ref_array( 'betterdocs_base_layout_inner_wrapper_before', [ & $terms ] );
19 ?>
20 <div
21 <?php echo $inner_wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
22 <?php
23 $_defined_vars = get_defined_vars();
24 $_params = isset( $_defined_vars['params'] ) ? $_defined_vars['params'] : [];
25
26 $nested_subcategory = isset( $nested_subcategory ) ? $nested_subcategory : false;
27
28 $_current_queried_object_id = null;
29 $_current_queried_object = get_queried_object();
30
31 if ( $_current_queried_object instanceof \WP_Post ) {
32 $_current_terms = get_the_terms( $_current_queried_object->ID, 'doc_category' );
33 $_current_queried_object_id = isset( $_current_terms[0]->term_id ) ? $_current_terms[0]->term_id : null;
34 } elseif ( $_current_queried_object instanceof \WP_Term ) {
35 $_current_queried_object_id = $_current_queried_object->term_id;
36 }
37
38 $ancestors = [];
39
40 if ( is_single() && ! empty( $_current_queried_object_id ) ) {
41 $_category_ids = wp_get_post_terms( get_the_ID(), 'doc_category', [ 'fields' => 'ids' ] );
42 $ancestors = get_ancestors( $_category_ids[0], 'doc_category' );
43 }
44
45 if ( ! is_wp_error( $terms ) ) {
46 do_action_ref_array( 'betterdocs_layout_base_loop_start', [ & $terms, &$_defined_vars ] );
47
48 $_docs_query_args = [
49 'posts_per_page' => isset( $_params['posts_per_page'] ) ? $_params['posts_per_page'] : 0,
50 'multiple_kb' => isset( $_params['multiple_knowledge_base'] ) ? $_params['multiple_knowledge_base'] : false,
51 'kb_slug' => isset( $_params['kb_slug'] ) ? $_params['kb_slug'] : ''
52 ];
53
54 $docs_query_args = ! isset( $docs_query_args ) ? $_docs_query_args : wp_parse_args( $docs_query_args, $_docs_query_args );
55
56 $terms_count = count( $terms );
57 $terms_number = 1;
58 foreach ( $terms as $term ) {
59 $_counts = betterdocs()->query->get_docs_count(
60 $term,
61 $nested_subcategory,
62 [
63 'multiple_knowledge_base' => isset( $_params['multiple_knowledge_base'] ) ? $_params['multiple_knowledge_base'] : false,
64 'kb_slug' => isset( $_params['kb_slug'] ) ? $_params['kb_slug'] : ''
65 ]
66 );
67
68 if ( $_counts <= 0 ) {
69 continue;
70 }
71
72 if ( $widget_type == 'category-box' || ( $widget_type == 'category-grid' && $layout == 'layout-2' ) ) {
73 $_counts = [
74 'counts' => $_counts,
75 'prefix' => ! empty( $count_prefix ) ? $count_prefix : '',
76 'suffix' => ! empty( $count_suffix ) ? $count_suffix : '',
77 'suffix_singular' => ! empty( $count_suffix_singular ) ? $count_suffix_singular : ''
78 ];
79 }
80
81 // Count Sub Terms
82 $sub_terms_count = 0;
83 if ( isset( $_params['taxonomy'] ) && $_params['taxonomy'] == 'doc_category' ) {
84 $sub_terms_count = count( betterdocs()->query->get_all_child_term_ids( $_params['taxonomy'], $term->term_id ) );
85 } elseif ( isset( $_params['taxonomy'] ) && $_params['taxonomy'] == 'knowledge_base' ) {
86 $count_doc_categories = betterdocs()->query->count_doc_categories_for_knowledge_base( $term->slug );
87 $sub_terms_count = $count_doc_categories;
88 }
89
90
91 $permalink = apply_filters(
92 'betterdocs_term_permalink',
93 get_term_link( $term->term_id, $term->taxonomy ),
94 $term,
95 'doc_category',
96 $_params
97 );
98
99 $docs_query_args['term_id'] = $term->term_id;
100 $docs_query_args['term_slug'] = $term->slug;
101 $docs_query_args['nested_subcategory'] = $nested_subcategory;
102
103 $_params = wp_parse_args(
104 [
105 'permalink' => $permalink,
106 'wrapper_class' => [ $layout ],
107 'term' => $term,
108 'counts' => $_counts,
109 'terms_count' => $terms_count,
110 'terms_number' => $terms_number,
111 'sub_terms_count' => $sub_terms_count,
112 'queried_object' => $_current_queried_object,
113 'current_queried_object_id' => $_current_queried_object_id,
114 'ancestors' => $ancestors,
115 'query_args' => betterdocs()->query->docs_query_args( $docs_query_args )
116 ],
117 $_params
118 );
119
120 $template_params = apply_filters( 'betterdocs_template_params', $_params, $layout, $term, $widget_type );
121 $layout_filename = apply_filters( 'betterdocs_layout_filename', $layout, $layout, $widget_type );
122 $layout_filename = sanitize_file_name( $layout_filename );
123
124 betterdocs()->views->get( 'layouts/' . $widget_type . '/' . $layout_filename, $template_params );
125 ++$terms_number;
126 --$terms_count;
127 }
128
129 do_action_ref_array( 'betterdocs_layout_base_loop_end', [ & $terms, &$_defined_vars ] );
130 } else {
131 betterdocs()->views->get( 'layout-parts/no-content' );
132 }
133
134 wp_reset_postdata();
135 ?>
136 </div>
137 <?php
138 /**
139 * Base Layout After Inner Wrapper
140 */
141 do_action_ref_array( 'betterdocs_base_layout_inner_wrapper_after', [ & $terms ] );
142 ?>
143 <div class="clearfix"></div>
144 <?php if ( isset( $is_edit_mode ) && $is_edit_mode && $widget_type == 'category-grid' ) : ?>
145 <script>
146 /**
147 * TODO: Not working in Elementor Editor on first Load.
148 */
149 jQuery(document).ready(function($) {
150 $('.betterdocs-category-grid').each(function() {
151 let $grid = $(this),
152 $layout_mode = $grid.data('layout-mode'),
153 $column = $grid.data('column'),
154 $column_space = $grid.data('column_space');
155 if ($layout_mode === 'masonry') {
156 let masonryItem = $(".betterdocs-single-category-wrapper", $grid);
157 let total_margin = ($column - 1) * $column_space;
158 masonryItem.css("width", "calc((100% - " + total_margin + "px) / " + parseInt($column) + ")");
159 $grid.masonry({
160 itemSelector: ".betterdocs-single-category-wrapper",
161 percentPosition: true,
162 gutter: $column_space
163 });
164 }
165 });
166 });
167 </script>
168 <?php endif; ?>
169 </div>
170 <?php
171 /**
172 * Base Layout After Wrapper
173 */
174 do_action_ref_array( 'betterdocs_base_layout_wrapper_after', [ & $terms ] );
175 ?>
176