PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.4.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.4.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 3.4.1, at views/layouts/base.php

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