PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.0.7
Easy Elements for Elementor – Addons & Website Templates v1.0.7
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / widgets / excerpt / excerpt.php

excerpt.php in Easy Elements for Elementor – Addons & Website Templates 1.0.7, at widgets/excerpt/excerpt.php

238 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 use Elementor\Controls_Manager;
3 use Elementor\Widget_Base;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 if( class_exists("Easyel_Excerpt_Widget")) {
10 return;
11 }
12
13 class Easyel_Excerpt_Widget extends \Elementor\Widget_Base {
14
15 public function get_style_depends() {
16 $handle = 'eel-excerpt';
17 $css_path = plugin_dir_path( __FILE__ ) . 'css/excerpt.css';
18
19 if ( ! wp_style_is( $handle, 'registered' ) && file_exists( $css_path ) ) {
20 wp_register_style( $handle, plugins_url( 'css/excerpt.css', __FILE__ ), [], defined( 'WP_DEBUG' ) && WP_DEBUG ? filemtime( $css_path ) : '1.0.0' );
21 }
22
23 return [ $handle ];
24 }
25
26 public function get_name() {
27 return 'eel-excerpt';
28 }
29
30 public function get_title() {
31 return __( 'Post Excerpt', 'easy-elements' );
32 }
33
34 public function get_icon() {
35 return 'easyicon easyelIcon-post-excerpt';
36 }
37
38 public function get_categories() {
39 return [ 'easyelements_category_pro' ];
40 }
41
42 public function get_keywords() {
43 return [ 'excerpt', 'content', 'link', 'text' ];
44 }
45
46 protected function register_controls() {
47
48 $this->start_controls_section(
49 'content_section',
50 [
51 'label' => esc_html__('Excerpt Settings', 'easy-elements'),
52 'tab' => Controls_Manager::TAB_CONTENT,
53 ]
54 );
55
56 $this->add_control(
57 'excerpt_length',
58 [
59 'label' => esc_html__('Excerpt Length', 'easy-elements'),
60 'type' => Controls_Manager::NUMBER,
61 'default' => 55,
62 ]
63 );
64
65 $this->add_control(
66 'read_more_text',
67 [
68 'label' => esc_html__('Read More', 'easy-elements'),
69 'type' => Controls_Manager::TEXT,
70 'default' => esc_html__('Read More', 'easy-elements'),
71 ]
72 );
73
74
75 $this->add_control(
76 'excerpt_color',
77 [
78 'label' => esc_html__('Excerpt Color', 'easy-elements'),
79 'type' => Controls_Manager::COLOR,
80 'selectors' => [
81 '{{WRAPPER}} .eel-excerpt' => 'color: {{VALUE}};',
82 ],
83 ]
84 );
85
86 $this->add_group_control(
87 \Elementor\Group_Control_Typography::get_type(),
88 [
89 'name' => 'excerpt_typography',
90 'selector' => '{{WRAPPER}} .eel-excerpt',
91 ]
92 );
93
94 // Add Padding control for the button
95 $this->add_responsive_control(
96 'button_padding',
97 [
98 'label' => esc_html__('Button Padding', 'easy-elements'),
99 'type' => Controls_Manager::DIMENSIONS,
100 'size_units' => [ 'px', 'em', '%' ],
101 'selectors' => [
102 '{{WRAPPER}} .eel-excerpt-readmore' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
103 ],
104 ]
105 );
106
107 // Add Margin control for the button
108 $this->add_responsive_control(
109 'button_margin',
110 [
111 'label' => esc_html__('Button Margin', 'easy-elements'),
112 'type' => Controls_Manager::DIMENSIONS,
113 'size_units' => [ 'px', 'em', '%' ],
114 'selectors' => [
115 '{{WRAPPER}} .eel-excerpt-readmore' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
116 ],
117 ]
118 );
119
120 // Start Button Style Tabs
121 $this->start_controls_tabs('button_style_tabs');
122
123 // Normal State Tab
124 $this->start_controls_tab(
125 'button_normal_tab',
126 [
127 'label' => esc_html__('Normal', 'easy-elements'),
128 ]
129 );
130
131 $this->add_control(
132 'button_color',
133 [
134 'label' => esc_html__('Button Color', 'easy-elements'),
135 'type' => Controls_Manager::COLOR,
136 'selectors' => [
137 '{{WRAPPER}} .eel-excerpt-readmore' => 'color: {{VALUE}};',
138 ],
139 ]
140 );
141 $this->add_group_control(
142 \Elementor\Group_Control_Background::get_type(),
143 [
144 'name' => 'background_buttpm',
145 'types' => [ 'classic', 'gradient', 'video' ],
146 'selector' => '{{WRAPPER}} .eel-excerpt-readmore',
147 ]
148 );
149 $this->add_group_control(
150 \Elementor\Group_Control_Border::get_type(),
151 [
152 'name' => 'button_border',
153 'selector' => '{{WRAPPER}} .eel-excerpt-readmore',
154 ]
155 );
156 $this->end_controls_tab();
157
158 // Hover State Tab
159 $this->start_controls_tab(
160 'button_hover_tab',
161 [
162 'label' => esc_html__('Hover', 'easy-elements'),
163 ]
164 );
165 $this->add_control(
166 'button_hover_color',
167 [
168 'label' => esc_html__('Button Hover Color', 'easy-elements'),
169 'type' => Controls_Manager::COLOR,
170 'selectors' => [
171 '{{WRAPPER}} .eel-excerpt-readmore:hover' => 'color: {{VALUE}};',
172 ],
173 ]
174 );
175 $this->add_group_control(
176 \Elementor\Group_Control_Background::get_type(),
177 [
178 'name' => 'button_hover_background',
179 'types' => [ 'classic', 'gradient' ],
180 'selector' => '{{WRAPPER}} .eel-excerpt-readmore:hover',
181 ]
182 );
183 $this->add_group_control(
184 \Elementor\Group_Control_Border::get_type(),
185 [
186 'name' => 'button_hover_border',
187 'selector' => '{{WRAPPER}} .eel-excerpt-readmore:hover',
188 ]
189 );
190 $this->end_controls_tab();
191
192 $this->end_controls_tabs();
193
194 $this->add_control(
195 'display_button',
196 [
197 'label' => esc_html__('Read More Enable', 'easy-elements'),
198 'type' => Controls_Manager::SWITCHER,
199 'label_on' => esc_html__('Show', 'easy-elements'),
200 'label_off' => esc_html__('Hide', 'easy-elements'),
201 'return_value' => 'yes',
202 'default' => 'yes',
203 ]
204 );
205
206
207 $this->end_controls_section();
208
209 }
210
211 protected function render() {
212 $settings = $this->get_settings_for_display();
213 $editor_mode = ( \Elementor\Plugin::instance()->editor->is_edit_mode() );
214 $excerpt_length = !empty($settings['excerpt_length']) ? intval($settings['excerpt_length']) : 55;
215 $read_more_text = !empty($settings['read_more_text']) ? $settings['read_more_text'] : esc_html__('Read More', 'easy-elements');
216 $display_button = !isset($settings['display_button']) || $settings['display_button'] === 'yes';
217
218 if ( $editor_mode ) {
219 // Show a sample excerpt in editor mode
220 $excerpt = esc_html__('This is a preview of the post excerpt. The actual excerpt will appear here on the frontend.', 'easy-elements');
221 $post_url = '#';
222 } else {
223 $excerpt = get_the_excerpt();
224 $post_url = get_permalink();
225 }
226 // Trim excerpt to desired length
227 $excerpt = wp_trim_words( $excerpt, $excerpt_length, '...' );
228 ?>
229 <div class="eel-excerpt">
230 <div class="eel-excerpt-text"><?php echo esc_html($excerpt); ?></div>
231 <?php if ( !empty($read_more_text) && $display_button ) : ?>
232 <a href="<?php echo esc_url($post_url); ?>" class="eel-excerpt-readmore"> <?php echo esc_html($read_more_text); ?> </a>
233 <?php endif; ?>
234 </div>
235 <?php
236 }
237 }
238