Izveidot pielāgotu Elementor logrīku – attēlu salīdzināšanas soli pa solim rokasgrāmata
Create custom Elementor Widget – Image Comparison step by step guide
Разработка сайтов – заказать разработку сайта
Laipni lūgti šajā pamācībā, kurā mēs iedziļināsimies sava pielāgota Elementor logrīka izveides procesā. Reālajos projektos bieži vien ir gadījumi, kad Elementor standarta logrīku komplekts, neatkarīgi no tā, vai tas ir bezmaksas vai Pro versijā, var pilnībā neatbilst jūsu dizaina vai funkcionālajām prasībām. Tieši šajā gadījumā nenovērtējama kļūst iespēja izveidot pielāgotus logrīkus, kas ļauj jums izstrādāt tieši jūsu vajadzībām pielāgotus izkārtojumus vai blokus.
Izpētīsim, kā izstrādāt pielāgotus Elementor logrīkus, sniedzot jums zināšanas, lai efektīvi orientētos šādās situācijās un uzlabotu jūsu vietnes veidošanas iespējas.
Izlasiet šo pamācību, un es jums parādīšu, kā tieši to izdarīt. Ticiet man, tas ir ļoti vienkārši.
Pirms mēs sāksim, ir dažas lietas, kas jums būs nepieciešamas:
Mēs izveidosim pielāgotu spraudni, lai turētu mūsu logrīku. Jūs jautājat, kāpēc spraudnis? Tāpēc, ka Elementor, meklējot logrīkus, ko pievienot savai bibliotēkai, lasa no spraudņu kataloga.
WordPress spraudņu direktorijā (wp-content/plugins) izveidojiet jaunu mapi savam spraudnim. Jūs varat to nosaukt, kā vien vēlaties. Es savu nosaucu par image-comparison.
Jaunajā spraudņa direktorijā izveidojiet jaunu PHP failu ar tādu pašu nosaukumu kā jūsu mapei (piemēram, image-comparison.php). Tas būs galvenais spraudņa fails, kurā mēs rakstīsim sākotnējo kodu.
Tā iekšpusē ievietosim spraudņa deklarāciju, lai WordPress varētu atpazīt šo spraudni.
Tagad sadalīsim, ko šis kods dara. Pirmkārt, tajā tiek iestatīta pamatinformācija par spraudni, piemēram, tā nosaukums, apraksts, versija, autors un citi dati. Šī informācija ir svarīga spraudņa identificēšanai un pārvaldīšanai WordPress ekosistēmā.
Tātad tagad, ja paneļa vadības panelī atveriet sadaļu Iespraudņi, redzēsiet, ka mūsu spraudnis ir šeit.
Mēs izveidojām pielāgotu WordPress Elementor logrīku spraudni
Forši, jā. Mēs tikko izveidojām spraudni. Tagad ir pienācis laiks rakstīt kodu.
Pirmkārt, es piemēroju ļoti vienkāršu pārbaudi, lai neviens nepiekļūtu spraudnim tieši, tas ir drošības labad.
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
Tagad pārejam pie galvenajām lietām.
Tagad mēs reģistrēsim mūsu pielāgoto Elementor logrīku. Es vadīšos pēc šīs dokumentācijas no Elementor vietnes.
Tātad ielieciet šo.
// Register Widget
function register_image_comparison_widget( $widgets_manager ) {
require_once( __DIR__ . '/widgets/image-comparison-widget.php' );
$widgets_manager->register( new \Elementor_Image_Comparison_Widget() );
}
add_action( 'elementor/widgets/register', 'register_image_comparison_widget' );
// Enqueue Scripts and Styles
function enqueue_image_comparison_widget_scripts() {
wp_enqueue_style( 'image-comparison-widget-style', plugins_url( 'style.css', __FILE__ ) );
wp_enqueue_script( 'image-comparison-widget-script', plugins_url( 'script.js', __FILE__ ), array('jquery'), false, true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_image_comparison_widget_scripts' );
Šis koda fragments kalpo diviem galvenajiem mērķiem:
Tas ietver failu, kurā ir logrīka klase (image-comparison-widget.php), izmantojot require_once.
Tad tas reģistrē Elementor_Image_Comparison_Widget klases gadījumu, izmantojot $widgets_manager->register(). Šī klase jādefinē iekļautajā PHP failā.
Tas pieprasa CSS failu (style.css), izmantojot wp_enqueue_style. Šajā failā ir ietverts pielāgotajam logrīkam raksturīgais stils.
Tas pieprasa JavaScript failu (script.js), izmantojot wp_enqueue_script. Šajā failā ir ietvertas logrīkam nepieciešamās JavaScript funkcijas, un tas ir atkarīgs no jQuery, kā norādīts array(‘jquery’).
Pēdējais wp_enqueue_script parametrs true norāda, ka skripts jāielādē lapas apakšā, kas bieži vien ir ieteicams, lai uzlabotu veiktspēju.
Tagad spraudņa galvenā faila “image-comparison.php” pilni kodi ir šādi.
register( new \Elementor_Image_Comparison_Widget() );
}
add_action( 'elementor/widgets/register', 'register_image_comparison_widget' );
// Enqueue Scripts and Styles
function enqueue_image_comparison_widget_scripts() {
wp_enqueue_style( 'image-comparison-widget-style', plugins_url( 'style.css', __FILE__ ) );
wp_enqueue_script( 'image-comparison-widget-script', plugins_url( 'script.js', __FILE__ ), array('jquery'), false, true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_image_comparison_widget_scripts' );
Tagad izveidosim mūsu Elementor logrīku.
Izveidosim mapi “widgets” un tad tajā izveidosim mūsu iekļauto logrīka failu “image-comparison-widget.php”.
Mēs veidojam logrīka failu mapes “widgets” iekšpusē, jo šo “/widgets/card-widget.php” esam ierakstījuši spraudņa galvenajā failā “image-comparison.php”.
Tagad sāciet rakstīt mūsu logrīka kodu faila iekšpusē.
Vispirms mēs uzrakstīsim ļoti vienkāršu drošības pārbaudi, lai neviens nevarētu piekļūt failam tieši.
Tālāk mēs uzrakstīsim savu logrīku klasi.
class Elementor_Image_Comparison_Widget extends Widget_Base {
public function get_name() {
return 'image-comparison-widget';
}
public function get_title() {
return __( 'Image Comparison', 'image-comparison-widget' );
}
public function get_icon() {
return 'eicon-image-before-after';
}
public function get_categories() {
return [ 'basic' ];
}
Labi, tagad ir visinteresantākā daļa, kurā mēs sāksim kodēt mūsu logrīku laukus.
Tātad, mēs uzrakstīsim aizsargātu funkciju “register_controls()”.
protected function _register_controls() {
$this->start_controls_section(
'content_section',
[
'label' => __( 'Content', 'plugin-name' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'background_image',
[
'label' => __( 'Background Image', 'plugin-name' ),
'type' => Controls_Manager::MEDIA,
'default' => [
'url' => \Elementor\Utils::get_placeholder_image_src(),
],
]
);
$this->add_control(
'foreground_image',
[
'label' => __( 'Foreground Image', 'plugin-name' ),
'type' => Controls_Manager::MEDIA,
'default' => [
'url' => \Elementor\Utils::get_placeholder_image_src(),
],
]
);
$this->add_control(
'slider_position',
[
'label' => __( 'Slider Position', 'plugin-name' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ '%' ],
'range' => [
'%' => [
'min' => 0,
'max' => 100,
'step' => 1,
],
],
'default' => [
'unit' => '%',
'size' => 50,
],
]
);
$this->end_controls_section();
}
Elementor vietnē atradīsiet visas vadības ierīces, piemēram, teksta laukus, teksta apgabala laukus u. c., ko varat deklarēt.
Masīvs ar sadaļas iestatījumiem:
Masīvs ar vadības ierīces iestatījumiem:
Lai pielāgotu vadības elementu uzvedību un izskatu, ir nodrošināti papildu iestatījumi, kas raksturīgi katram vadības elementu tipam, piemēram, “size_units”, “range” un “default”.
Elementor logrīka satura sadaļa zem satura cilnes, kad tā ir galīga
Sīkāk izstrādāsim kodu, kas iedzīvinās mūsu logrīku priekšpusē. Mēs izveidosim render() funkciju, kas ir atbildīga par logrīka vizuālā izvadījuma ģenerēšanu jūsu vietnes priekšpusē.
protected function render() {
$settings = $this->get_settings_for_display();
?>
<#
var bgImage = settings.background_image.url;
var fgImage = settings.foreground_image.url;
var sliderPos = settings.slider_position.size;
#>
start_controls_section(
'content_section',
[
'label' => __( 'Content', 'plugin-name' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'background_image',
[
'label' => __( 'Background Image', 'plugin-name' ),
'type' => Controls_Manager::MEDIA,
'default' => [
'url' => \Elementor\Utils::get_placeholder_image_src(),
],
]
);
$this->add_control(
'foreground_image',
[
'label' => __( 'Foreground Image', 'plugin-name' ),
'type' => Controls_Manager::MEDIA,
'default' => [
'url' => \Elementor\Utils::get_placeholder_image_src(),
],
]
);
$this->add_control(
'slider_position',
[
'label' => __( 'Slider Position', 'plugin-name' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ '%' ],
'range' => [
'%' => [
'min' => 0,
'max' => 100,
'step' => 1,
],
],
'default' => [
'unit' => '%',
'size' => 50,
],
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
?>
<#
var bgImage = settings.background_image.url;
var fgImage = settings.foreground_image.url;
var sliderPos = settings.slider_position.size;
#>
Tagad ļauj izveidot style.css galvenajā spraudņa mapē. Šajā failā tiks saglabāti visi mūsu Image Comprasion logrīka būtiskie stili.
.acontainer {
max-width: 800px;
}
#comparison {
width: 100%;
padding-bottom: 100%;
overflow: hidden;
position: relative;
}
figure {
position: absolute;
background-size: cover;
font-size: 0;
width: 100%;
height: 100%;
margin: 0;
}
#divisor {
background-size: cover;
position: absolute;
width: 50%;
box-shadow: 0 5px 10px -2px rgba(0, 0, 0, 0.3);
bottom: 0;
height: 100%;
&::before,
&::after {
content: "";
position: absolute;
right: -2px;
width: 4px;
height: calc(50% - 25px);
background: white;
z-index: 3;
}
&::before {
top: 0;
box-shadow: 0 -3px 8px 1px rgba(0, 0, 0, 0.3);
}
&::after {
bottom: 0;
box-shadow: 0 3px 8px 1px rgba(0, 0, 0, 0.3);
}
}
#handle {
position: absolute;
height: 50px;
width: 50px;
top: 50%;
left: 50%;
transform: translateY(-50%) translateX(-50%);
z-index: 1;
&::before,
&::after {
content: "";
width: 0;
height: 0;
border: 6px inset transparent;
position: absolute;
top: 50%;
margin-top: -6px;
}
&::before {
border-right: 6px solid white;
left: 50%;
margin-left: -17px;
}
&::after {
border-left: 6px solid white;
right: 50%;
margin-right: -17px;
}
}
input[type="range"] {
-webkit-appearance: none;
-moz-appearance: none;
position: absolute;
top: 50%;
left: -25px;
transform: translateY(-50%);
background-color: transparent;
width: calc(100% + 50px);
z-index: 2;
&:focus,
&:active {
border: none;
outline: none;
}
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
border: none;
height: 50px;
width: 50px;
border-radius: 50%;
background: transparent;
border: 4px solid white;
box-shadow: 0 0 8px 1px rgba(0, 0, 0, 0.3);
}
input[type="range"]::-moz-range-track {
-moz-appearance: none;
height: 15px;
width: 100%;
background-color: transparent;
position: relative;
outline: none;
}
Ir pienācis laiks pievienot mūsu koda pēdējo daļu. Lai logrīks darbotos, mums ir jāievada JavaScript kods, tāpēc, kad lietotājs velk mūsu slīdni, tas maina attēlu. Failam jābūt izveidotam galvenajā spraudņa mapē.
document.addEventListener('DOMContentLoaded', function() {
var divisor = document.getElementById("divisor"),
handle = document.getElementById("handle"),
slider = document.getElementById("slider");
function moveDivisor() {
handle.style.left = slider.value + "%";
divisor.style.width = slider.value + "%";
}
slider.addEventListener('input', moveDivisor);
moveDivisor();
});
Lejupielādējiet mūsu attēlu salīdzināšanas spraudni Elementor tagad un uzlabojiet savas vietnes vizuālo pievilcību! Izmantojot šo jaudīgo rīku, varat bez piepūles izveidot satriecošus attēlu salīdzinājumus pirms un pēc, lai aizrautu savu auditoriju. Palieliniet lietotāju iesaisti un demonstrējiet savu darbu kā vēl nekad agrāk. Sāciet darbu jau šodien un atraisiet visu savas Elementor darbinātās vietnes potenciālu!
Lasīt vairāk
Create custom Elementor Widget – Image Comparison step by step guide