PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.2.1
Easy Elements for Elementor – Addons & Website Templates v1.2.1
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.2.1, at widgets/excerpt/excerpt.php

247 lines 6.6 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_Free_Excerpt_Widget")) {
10 return;
11 }
12
13 class Easyel_Free_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 ) : EASYELEMENTS_VER );
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', 'post-excerpt' ];
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 'excerpt_color',
67 [
68 'label' => esc_html__('Excerpt Color', 'easy-elements'),
69 'type' => Controls_Manager::COLOR,
70 'selectors' => [
71 '{{WRAPPER}} .eel-excerpt' => 'color: {{VALUE}};',
72 ],
73 ]
74 );
75
76 $this->add_group_control(
77 \Elementor\Group_Control_Typography::get_type(),
78 [
79 'name' => 'excerpt_typography',
80 'selector' => '{{WRAPPER}} .eel-excerpt',
81 ]
82 );
83
84 // Read More Button
85 $this->add_control(
86 'display_button',
87 [
88 'label' => esc_html__('Read More Enable', 'easy-elements'),
89 'type' => Controls_Manager::SWITCHER,
90 'label_on' => esc_html__('Show', 'easy-elements'),
91 'label_off' => esc_html__('Hide', 'easy-elements'),
92 'return_value' => 'yes',
93 'default' => 'yes',
94 ]
95 );
96 $this->add_control(
97 'read_more_text',
98 [
99 'label' => esc_html__('Read More', 'easy-elements'),
100 'type' => Controls_Manager::TEXT,
101 'default' => esc_html__('Read More', 'easy-elements'),
102 'condition' => [
103 'display_button' => 'yes',
104 ],
105 ]
106 );
107
108 // Start Button Style Tabs
109 $this->start_controls_tabs('button_style_tabs', [
110 'condition' => ['display_button' => 'yes'],
111 ]);
112 // Normal State Tab
113 $this->start_controls_tab(
114 'button_normal_tab',
115 [
116 'label' => esc_html__('Normal', 'easy-elements'),
117 ]
118 );
119
120 $this->add_control(
121 'button_color',
122 [
123 'label' => esc_html__('Button Color', 'easy-elements'),
124 'type' => Controls_Manager::COLOR,
125 'selectors' => [
126 '{{WRAPPER}} .eel-excerpt-readmore' => 'color: {{VALUE}};',
127 ],
128 ]
129 );
130 $this->add_group_control(
131 \Elementor\Group_Control_Background::get_type(),
132 [
133 'name' => 'background_buttpm',
134 'types' => [ 'classic', 'gradient', 'video' ],
135 'selector' => '{{WRAPPER}} .eel-excerpt-readmore',
136 ]
137 );
138 $this->add_group_control(
139 \Elementor\Group_Control_Border::get_type(),
140 [
141 'name' => 'button_border',
142 'selector' => '{{WRAPPER}} .eel-excerpt-readmore',
143 ]
144 );
145 $this->end_controls_tab();
146
147 // Hover State Tab
148 $this->start_controls_tab(
149 'button_hover_tab',
150 [
151 'label' => esc_html__('Hover', 'easy-elements'),
152 ]
153 );
154 $this->add_control(
155 'button_hover_color',
156 [
157 'label' => esc_html__('Button Hover Color', 'easy-elements'),
158 'type' => Controls_Manager::COLOR,
159 'selectors' => [
160 '{{WRAPPER}} .eel-excerpt-readmore:hover' => 'color: {{VALUE}};',
161 ],
162 ]
163 );
164 $this->add_group_control(
165 \Elementor\Group_Control_Background::get_type(),
166 [
167 'name' => 'button_hover_background',
168 'types' => [ 'classic', 'gradient' ],
169 'selector' => '{{WRAPPER}} .eel-excerpt-readmore:hover',
170 ]
171 );
172 $this->add_group_control(
173 \Elementor\Group_Control_Border::get_type(),
174 [
175 'name' => 'button_hover_border',
176 'selector' => '{{WRAPPER}} .eel-excerpt-readmore:hover',
177 ]
178 );
179 $this->end_controls_tab();
180
181 $this->end_controls_tabs();
182
183 // Add Padding control for the button
184 $this->add_responsive_control(
185 'button_padding',
186 [
187 'label' => esc_html__('Button Padding', 'easy-elements'),
188 'type' => Controls_Manager::DIMENSIONS,
189 'size_units' => [ 'px', 'em', '%' ],
190 'selectors' => [
191 '{{WRAPPER}} .eel-excerpt-readmore' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
192 ],
193 'separator' => 'before',
194 'condition' => [
195 'display_button' => 'yes',
196 ],
197 ]
198 );
199
200 // Add Margin control for the button
201 $this->add_responsive_control(
202 'button_margin',
203 [
204 'label' => esc_html__('Button Margin', 'easy-elements'),
205 'type' => Controls_Manager::DIMENSIONS,
206 'size_units' => [ 'px', 'em', '%' ],
207 'selectors' => [
208 '{{WRAPPER}} .eel-excerpt-readmore' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
209 ],
210 'condition' => [
211 'display_button' => 'yes',
212 ],
213 ]
214 );
215
216 $this->end_controls_section();
217
218 }
219
220 protected function render() {
221 $settings = $this->get_settings_for_display();
222 $editor_mode = ( \Elementor\Plugin::instance()->editor->is_edit_mode() );
223 $excerpt_length = !empty($settings['excerpt_length']) ? intval($settings['excerpt_length']) : 55;
224 $read_more_text = !empty($settings['read_more_text']) ? $settings['read_more_text'] : esc_html__('Read More', 'easy-elements');
225 $display_button = !isset($settings['display_button']) || $settings['display_button'] === 'yes';
226
227 if ( $editor_mode ) {
228 // Show a sample excerpt in editor mode
229 $excerpt = esc_html__('This is a preview of the post excerpt. The actual excerpt will appear here on the frontend.', 'easy-elements');
230 $post_url = '#';
231 } else {
232 $excerpt = get_the_excerpt();
233 $post_url = get_permalink();
234 }
235 // Trim excerpt to desired length
236 $excerpt = wp_trim_words( $excerpt, $excerpt_length, '...' );
237 ?>
238 <div class="eel-excerpt">
239 <div class="eel-excerpt-text"><?php echo esc_html($excerpt); ?></div>
240 <?php if ( !empty($read_more_text) && $display_button ) : ?>
241 <a href="<?php echo esc_url($post_url); ?>" class="eel-excerpt-readmore"> <?php echo esc_html($read_more_text); ?> </a>
242 <?php endif; ?>
243 </div>
244 <?php
245 }
246 }
247